[英]How to enable gzip compression on Heroku Cedar (Python/Flask/Gunicorn)
如何在新的Heroku Cedar堆栈上启用GZIP压缩? 这是他们的网站直接 :
由于对Cedar应用程序的请求直接发送到应用程序服务器 - 不通过像nginx这样的HTTP服务器代理 - 因此必须在应用程序中完成任何响应压缩。 对于Rack应用程序,可以使用Rack :: Deflater中间件来完成。 对于gzip压缩静态资源,请确保在中间件堆栈中的ActionDispatch :: Static之前加载Rack :: Deflater。
如果我正确读取这个,我的Python应用程序代码现在负责gzipping响应? 我将如何压缩我的静态资产(例如css / js)? 我正在使用Flask和GUnicorn。
你只需要一个wsgi中间件来gzips响应。 请参阅使用Pyramid Gzipping所有HTTP流量或http://librelist.com/browser//flask/2010/6/14/gzip-compression/
根据2003年发布的WSGI规范 ,应用程序不应该gzip响应,而是将其留给服务器(假设是Apache,运行应用程序CGI-stylee)。
应用程序和中间件不得对其输出应用任何类型的Transfer-Encoding,例如分块或gzipping; 作为“逐跳”操作,这些编码是实际Web服务器/网关的范围。
但是今天在2013年,应用程序通常是服务器。 WSGI没有预料到这一点。 根据http://www.b-list.org/weblog/2009/aug/10/wsgi/ ,这是一个问题
WSGI对与CGI兼容性的强烈坚持也意味着,在2009年,Python Web开发世界仍未能显着改进1997年的应用程序编程模型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.