簡體   English   中英

Windows,Flask和Cherrypy作為WSGI服務器-gzip壓縮不起作用

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM