静态文件该由谁来发?缓存头怎么设?gzip 能省多少?长缓存之后怎么更新?这篇用真实的 gunicorn 与 nginx 把每一步的响应头与吞吐量出来。
[默认] Cache-Control: no-cache | ETag: True | Last-Modified: True | 带 If-None-Match 再请求 → 304 [SEND_FILE_MAX_AGE_DEFAULT = 31536000] Cache-Control: public, max-age=31536000 | ETag: True | Last-Modified: True | 带 If-None-Match 再请求 → 304
上一篇:ProxyFix 的作用;下一篇:媒体文件生产部署。
Flask static 路由(gunicorn sync×4)3459 请求/秒 | nginx 直接发静态文件 6607 请求/秒 | (对照:经 nginx 代理到 Flask 的动态页 / 1321 请求/秒)
压测工具是 ApacheBench,与服务同机运行,每个数字只测一次,只看相对关系。
不带 Accept-Encoding:47139 字节,Content-Encoding=None,Cache-Control=max-age=31536000 带 Accept-Encoding: gzip:3911 字节(8.3%),Content-Encoding=gzip,Vary=None
内容改之前 URL: /static/app.css?v=3390b73b | 改之后 URL: /static/app.css?v=eaf53a50 → URL 变了,浏览器会当作新资源重新下载