2010-12-21 15 views
9

Po pierwsze, używam Django. Django zapewnia oprogramowanie pośrednie gzip, które działa dobrze. Nginx zapewnia również moduł gzip. Czy byłoby lepiej, gdybyś używał modułu gzip Nginx, ponieważ jest on zaimplementowany wyłącznie w C, lub czy są inne kwestie, których mi brakuje?gzip - pytania dotyczące wydajności

Po drugie, Django nie zgłasza niczego poniżej 200 bajtów. Czy to dlatego, że gzipowanie jest zbyt kosztowne, aby mieć jakąkolwiek wartość, gdy kompresja jest mniejsza niż?

Po trzecie, interfejs API, który buduję, będzie prawie całkowicie dynamiczny z bardzo małym buforowaniem. Czy stosowanie gzipu jest wystarczająco drogie, aby w sytuacji takiej nie było praktyczne (w sytuacji, w której mógłbym buforować wyjście gzip na serwerze internetowym)?

Odpowiedz

8

1) Wyobrażam sobie, że wystarczy jedna kompresja gzip, a nginx jest szybszy, chociaż jeszcze go nie przetestowałem. GzipMiddleware wykorzystuje kilka wbudowanych elementów, które mogą być dobrze zoptymalizowane.

# From http://www.xhaus.com/alan/python/httpcomp.html#gzip 
# Used with permission. 
def compress_string(s): 
    import cStringIO, gzip 
    zbuf = cStringIO.StringIO() 
    zfile = gzip.GzipFile(mode='wb', compresslevel=6, fileobj=zbuf) 
    zfile.write(s) 
    zfile.close() 
    return zbuf.getvalue() 

2) Małe pliki spakowane gzipem prostu nie mogą skorzystać z kompresji (w rzeczywistości małe pliki mogą być większe, gdy przetwarzane), więc można zaoszczędzić czas, po prostu pomijam ten krok.

3) Można zaprojektować zestaw testów z przykładowymi danymi. Następnie zdecyduj, które dane będą najlepsze dla Twojej aplikacji.

Powiązane problemy