如何在Heroku Cedar上启用gzip压缩(Python / Flask / Gunicorn)

时间:2011-10-06 21:55:31

标签: python heroku gzip flask cedar

如何在新的Heroku Cedar堆栈上启用GZIP压缩?这是他们的site

  

由于对Cedar应用程序的请求直接发送到应用程序服务器 - 不通过像nginx这样的HTTP服务器代理 - 任何响应压缩都必须在您的应用程序中完成。对于Rack应用程序,可以使用Rack :: Deflater中间件来完成。对于gzip压缩的静态资源,请确保在中间件堆栈中的ActionDispatch :: Static之前加载Rack :: Deflater。

如果我正确读取此内容,我的Python应用程序代码现在负责gzipping响应?我将如何压缩我的静态资产(例如css / js)?我正在使用Flask和GUnicorn。

2 个答案:

答案 0 :(得分:6)

答案 1 :(得分:1)

根据2003年发布的WSGI spec,应用程序不应该将响应留给服务器(假设是Apache,运行应用程序CGI样式)。

  

应用程序和中间件不得对其输出应用任何类型的Transfer-Encoding,例如分块或gzipping;作为“逐跳”操作,这些编码是实际Web服务器/网关的范围。

但是今天在2013年,应用通常是服务器。 WSGI没有预料到这一点。根据{{​​3}}

,这是一个问题
  

WSGI对与CGI兼容性的强烈坚持也意味着,在2009年,Python Web开发世界仍未能显着改进1997年的应用程序编程模型。