
缓存配置的目标是两头兼得:静态资源尽量久缓存,更新又能立即生效。
一、分层模型
- 浏览器层:靠 Cache-Control 的 max-age,配好了重复访问零请求。
- 服务器层:Nginx 的 expires 与 etag/last-modified,命中则 304。
- CDN 层:边缘节点缓存,规则里注意”哪些路径缓存多久”。
二、静态资源:久缓存 + 指纹文件名
图片字体设置较长 max-age 没问题;CSS/JS 想久缓存,前提是文件名或查询串带指纹(如 ?ver=文件修改时间),内容一变 URL 就变,旧缓存自动失效。
三、HTML:短缓存或不缓存
HTML 里引用着带指纹的资源地址,它本身必须保持新鲜,设 no-cache 或几秒的短缓存,让资源 URL 的变化能尽快传导下去。
四、排查套路
看到旧资源别急着清缓存,先 curl 看响应头:Cache-Control 对不对、是 200 还是 304、X-Cache 命中没命中,一层层定位到问题在哪一层,比无头苍蝇式硬刷新有效得多。


