Python WhiteNoise 在 Flask 应用程序中不是 gzip 压缩

标签 python python-3.x flask python-requests gzip

我在我的 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/

相关文章:

python-3.x - 数据框在所有行的特定字符串之前拆分

python-3.x - 删除 Pandas 数据框中的小数列

python - python函数可以调用同名的全局函数吗?

python - 检查多个 ORM 关系的字段是否包含值

Python:选择其他值

python - 为什么我的 pyinstaller 不提取任何 exe 文件

python - Bluemix Flask 应用程序不再构建

python-3.x - Flask jsonify 是否支持 UTF-8?

python - Bokeh 与 CSS 和 jinja 的集成

python - 在 Ubuntu 16.04 LTS 上使用 pgadmin4.15 和 apache 时出现内部服务器错误