[英]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.