2011-10-06 18 views
12

Jak włączyć kompresję GZIP na nowym stosie Heroku Cedar? Jest to prosto z site:Jak włączyć kompresję gzip na Heroku Cedar (Python/Flask/Gunicorn)

Ponieważ wnioski do Cedar aplikacje są bezpośrednio do serwera aplikacji - nie przez proxy serwer HTTP jak nginx - każdy kompresji odpowiedzi musi być sporządzona w aplikacji. W przypadku aplikacji typu rack można to osiągnąć za pomocą oprogramowania pośredniego Rack :: Deflater. W przypadku statycznych zasobów gzip upewnij się, że Rack :: Deflater jest załadowany przed ActionDispatch :: Static w stosie oprogramowania pośredniego.

Jeśli czytam to poprawnie, mój kod aplikacji Python jest teraz odpowiedzialny za gzipping odpowiedzi? Jak mam skompresować moje zasoby statyczne (np. Css/js)? Używam Flask i GUnicorn.

+1

Może to nie jest w porządku, ale na pewno mówią ci o tym. Na python.org masz dokumentację dotyczącą użycia gzip: http://docs.python.org/library/gzip.html – gforcada

+0

po prostu grając tutaj adwokatów diabła - dlaczego musisz używać gzip? Nie płacisz za przepustowość w/z Heroku, więc po co się kompresować? –

+8

Muszę skompresować, ponieważ moi użytkownicy wolą załadować stronę, która waży 300 KB zamiast 1 MB! –

Odpowiedz

6

Potrzebne jest tylko oprogramowanie pośredniczące wsgi, które obsługuje odpowiedź gzip. Zobacz Gzipping all HTTP traffic with Pyramid lub http://librelist.com/browser//flask/2010/6/14/gzip-compression/

+0

Nie używam Pyramid, jak wspomniano powyżej. I ten link do Flask nie jest kompletną implementacją. –

+1

Zarówno piramida, jak i flakon są oparte na WSGI. Potrzebne jest oprogramowanie pośrednie wsgi, a nie oprogramowanie pośredniczące do kolb. –

+1

Oto kolejny http://code.google.com/p/ibkon-wsgi-gzip-middleware/source/browse/trunk/gzip_middleware.py i inny http://www.evanfosmark.com/2008/12/python- wsgi-middleware-for-automatic-gzipping/Znowu jest to oprogramowanie pośredniczące wsgi, a nie kolba, gunicorn lub Pyramid. –

0

Według WSGI spec, opublikowany 2003, aplikacje nie powinny gzip odpowiedzi, ale zostawiam to do serwera (przypuszczalnie być Apache, uruchamiając aplikację CGI-stylee).

aplikacje i oprogramowanie pośrednie nie mogą stosować żadnego rodzaju kodowania transferu na ich dane wyjściowe, takie jak chunking lub gzipp; jako operacje "hop-by-hop", te kodowania są domeną rzeczywistego serwera/bramy internetowej.

Ale dzisiaj w 2013 r. Często aplikacja to serwera. WSGI tego nie przewidział. To jest problem, według http://www.b-list.org/weblog/2009/aug/10/wsgi/

WSGI za ciekawy nacisk na zgodność z CGI oznacza również, że tutaj w 2009 roku, Python web-development świat jeszcze nie była w stanie znacząco poprawić aplikacji modelu programowania 1997 roku.

Powiązane problemy