Jak povolit kompresi gzip na Heroku Cedar (Python / baňka / Gunicorn)

hlasů
12

Jak mohu povolit kompresi GZIP na novém Heroku Cedar stack? To je přímo z jejich webu :

Vzhledem k tomu, požadavky na Cedar aplikací jsou vyrobeny přímo na aplikační server - není zastupována prostřednictvím HTTP serveru jako Nginx - jakákoliv komprese odpovědí musí být provedeno v rámci aplikace. Pro Rack aplikací, toto může být provedeno s Rack :: Deflater middlewaru. Pro gzip statické majetku, ujistěte se, že Rack :: Deflater načten před ActionDispatch :: Static v middleware stacku.

Pokud jsem to četl správně, můj kód aplikace Python je nyní zodpovědný za gzipping odezvy? Jak bych mohl jít o kompresi své statické prostředky (např css / js)? Jsem pomocí baňky a GUnicorn.

Položena 06/10/2011 v 22:55
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
6

Potřebujete k tomu jen WSGI middleware, který gzips odpověď. Viz Gzipping veškerého HTTP provozu s pyramidou nebo http://librelist.com/browser//flask/2010/6/14/gzip-compression/

Odpovězeno 21/10/2011 v 17:35
zdroj uživatelem

hlasů
0

Podle WSGI spec , publikoval 2003, by měla aplikace není gzip odpovědi, ale nechat na serveru (předpokládá, že je Apache, spuštění aplikací CGI-stylee).

aplikace a middleware se nesmí vztahovat jakékoliv převody-kódování k jejich výkonu, jako je Chunking nebo gzipping; jako „hop-by-hop“ operace, tyto kódování jsou provincie skutečného webového serveru / brány.

Ale dnes v roce 2013, se často, že aplikace je server. WSGI nečekali to. To je problém, podle http://www.b-list.org/weblog/2009/aug/10/wsgi/

WSGI je zvláštní důraz na kompatibilitu s CGI také znamená, že zde v roce 2009, web-vývoj světové Python stále nebyl schopen významně zlepšit programovací model aplikace roku 1997 je.

Odpovězeno 28/07/2013 v 19:34
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more