2011-10-06 19 views
12

¿Cómo activo la compresión GZIP en la nueva pila Heroku Cedar? Esto es directamente de su site:Cómo habilitar la compresión gzip en Heroku Cedar (Python/Flask/Gunicorn)

Desde peticiones a Cedar aplicaciones se realizan directamente en el servidor de aplicaciones - no proxy a través de un servidor HTTP como nginx - cualquier compresión de las respuestas debe hacerse dentro de su aplicación. Para aplicaciones Rack, esto se puede lograr con el middleware Rack :: Deflater. Para activos estáticos con gzip, asegúrese de que Rack :: Deflater esté cargado antes de ActionDispatch :: Static en su pila de middleware.

Si estoy leyendo esto correctamente, mi código de aplicación Python es ahora responsable de gzip las respuestas? ¿Cómo podría comprimir mis activos estáticos (por ejemplo, css/js)? Estoy usando Flask y GUnicorn.

+1

Quizás no se sienta bien, pero seguramente te lo están diciendo. En python.org tienes la documentación sobre el uso de gzip: http://docs.python.org/library/gzip.html – gforcada

+0

solo jugando a los defensores del diablo aquí. ¿Por qué necesitas usar gzip? No estás pagando por el ancho de banda dentro/fuera de Heroku, ¿por qué la necesidad de comprimir? –

+8

Necesito comprimir porque mis usuarios preferirán cargar una página que pesa 300 KB en lugar de 1 MB. –

Respuesta

6
+0

No estoy usando Pyramid, como se indicó anteriormente. Y ese enlace de Flask no es una implementación completa. –

+1

Tanto Pyramid como Flask están basados ​​en wsgi. Necesita el middleware wsgi, no el middleware específico del matraz. –

+1

Aquí hay otro http://code.google.com/p/ibkon-wsgi-gzip-middleware/source/browse/trunk/gzip_middleware.py y otro http://www.evanfosmark.com/2008/12/python- wsgi-middleware-for-automatic-gzipping/De nuevo, esto es wsgi middleware, no matraz, gunicornio o pirámide. –

0

De acuerdo con la WSGI spec, publicado el año 2003, las aplicaciones no deben gzip respuestas pero deje que el servidor (que se supone que ser Apache, ejecuta la aplicación CGI-stylee).

aplicaciones y middleware no deben aplicar ningún tipo de codificación de transferencia a su salida, como fragmentación o gzipping; como operaciones de "salto por salto", estas codificaciones son competencia del servidor/gateway web real.

Pero hoy en 2013, a menudo la aplicación es el servidor. WSGI no anticipó esto. Eso es un problema, de acuerdo con la curiosa insistencia http://www.b-list.org/weblog/2009/aug/10/wsgi/

de WSGI en la compatibilidad con CGI también significa que, aquí, en 2009, el mundo de desarrollo web de Python todavía no ha sido capaz de mejorar de manera significativa en el modelo de programación de aplicaciones de 1997.

Cuestiones relacionadas