记录一下那天晚上的排查过程。图片和样式文件每次刷新都重新下载,带宽消耗很高,配置里明明写了缓存时间。

真正麻烦的地方在于,几个原因的现象几乎一样。响应头被应用层覆盖。也可能是文件名不带版本,缓存命中但内容过期。

还有一种情况,前置 CDN 的缓存规则优先于源站。

上来先看实际返回的缓存头

curl -I https://域名/static/app.js

接着确认配置位置与优先级

nginx -T | grep -n expires

给静态资源加版本号

grep -rn 'app.js' templates/

刷新前置缓存后验证

curl -I https://域名/static/app.js?v=2

同事提醒我看一下最近一次发布,时间点确实对得上。

命令输出我都留了记录,免得改完记不清原来的值。

怎么算真的好了,看的是同一批现象。响应头里出现预期的缓存时间,重复访问不再回源,带宽明显下降。

补一句。应用输出的缓存头会覆盖服务器配置,排查要按响应头实际值判断,不能只看配置文件。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。

作者 9823189