[英]Windows, Flask and Cherrypy as WSGI server - gzip compression does not work
由於公司內部政策和應用需求,我正在公司中運行一個較舊的應用,該應用必須在Windows7上運行。 應用由Flask 0.12.4組成, WSGI服務器為Cherrypy 17.4.1 。 我已經成功運行了該應用程序,但是我想打開GZIP壓縮功能,但是我無法做到這一點。 我瀏覽了一些文檔和代碼示例,但沒有任何效果。 該應用程序僅用於Intranet,因此我無法使用某些在線工具進行測試。
我的cherrypy配置:
import os
import cherrypy
from machines import app
path = os.path.abspath(os.path.dirname(__file__))
config = {
'global' : {
'server.socket_host' : '0.0.0.0',
'server.socket_port' : 5000,
'server.thread_pool' : 10,
'log.screen':True,
'log.error_file': './log/cherry_error.log',
'environment': 'production',
},
'/static' : {
'tools.gzip.on' : True,
'tools.staticdir.on' : True,
'tools.staticdir.dir' : os.path.join(path, 'static'),
'tools.gzip.mime_types': ['text/*', 'application/*'],
}
}
if __name__ == '__main__':
cherrypy.tree.graft(app.wsgi_app, '/')
cherrypy.config.update(config)
cherrypy.engine.start()
我已經使用firefox和chrome開發人員工具測試了投放的文件,但沒有GZIP壓縮要求。
使用curl似乎是相同的:
curl --head --compressed http://192.168.1.4:5000/static/style.css
HTTP/1.1 200 OK
Content-Length: 68506
Content-Type: text/css; charset=utf-8
Last-Modified: Sat, 07 Sep 2019 14:55:52 GMT
Cache-Control: public, max-age=43200
Expires: Sun, 08 Sep 2019 04:54:20 GMT
ETag: "1567868152.63-68506-1294405540"
Date: Sat, 07 Sep 2019 16:54:20 GMT
Accept-Ranges: bytes
Server: 0.0.0.0
沒錯,我可以活下去,但是我真的很好奇這里出了什么問題。 如果有人可以建議我,我將不勝感激。
您不能覆蓋/static
路徑,因為所有/
都委派給Flask,也不能應用工具。 在CherryPy文檔的“ 高級”一章中的“ 在CherryPy中托管外國WSGI應用程序”部分中:
重要
您不能將工具與外部WSGI應用程序一起使用。
您必須使用單獨的路徑(例如/site
)來提供Flask WSGI應用程序,並使用/static
硬編碼作為模板中靜態資源的基本路徑。
在將Flask服務器推向生產環境時,您真的想從CDN或專用HTTP服務器(例如nginx)提供靜態資源,而不是通過Flask或CherryPy。 您可以簡單地將nginx配置為始終通過壓縮直接從磁盤直接提供/static
服務,例如,同時提供WSGI的所有剩余路徑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.