我在我的 Flask/Python3
应用程序中使用了 WhiteNoise
,其中 gunicorn
作为 Web 服务器,如下所示:
from whitenoise import WhiteNoise
app = Flask(__name__, static_folder='static')
app.wsgi_app = WhiteNoise(app.wsgi_app, root='static/')
app.wsgi_app.add_files(app.static_folder)
我什至尝试在 Flask object
中创建 static_folder
并将其添加到其他 WhiteNoise
文件中,但这也不起作用。它编译得很好,但是当我这样做时:
curl -i -H "Accept-Encoding: gzip" https://my-homepage/static/css/my.css
我收到以下回复:
HTTP/1.1 200 OK
Connection: keep-alive
Server: gunicorn/19.8.1
Date: Wed, 23 May 2018 09:53:38 GMT
Content-Length: 50162
Content-Type: text/css; charset=utf-8
Last-Modified: Wed, 23 May 2018 09:51:21 GMT
Cache-Control: public, max-age=43200
Expires: Wed, 23 May 2018 21:53:38 GMT
Etag: "1527069081.0-50162-130551313"
Accept-Ranges: bytes
Strict-Transport-Security: max-age=31536000
Via: 1.1 vegur
您可以看到 Content-Encoding: gzip
不存在。我错过了什么?
最佳答案
经过几次尝试,我找到了解决方案。看来 WhiteNoise
文档有点过时了,没有提到所有内容。
我改变了行:
app.wsgi_app = WhiteNoise(app.wsgi_app, root='static/')
到:
app.wsgi_app = WhiteNoise(app.wsgi_app, root=os.path.join(os.path.dirname(__file__), 'static'), prefix='static/')
首先,prefix
参数是必需的(文档中没有提到)而且Flask
应用程序不知道如何处理'static/'
路径因此必须提供绝对路径。
关于Python WhiteNoise 在 Flask 应用程序中不是 gzip 压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50485530/