HTTP缓存策略到底该怎么配才有效?
我给静态资源加了 Cache-Control: max-age=31536000,但每次刷新页面还是会重新请求,浏览器根本不走缓存,这是为啥?
我试过在 Nginx 里这样配置:
location ~* .(js|css|png|jpg|jpeg|gif|ico|woff2)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
但开发者工具里看到的响应头却是 Cache-Control: no-cache,好像被别的地方覆盖了?是不是还要改 HTML 里的引用方式?
你可以尝试在你的 location 块里加上这一行,确保你的设置不会被覆盖:
这个
always参数会强制覆盖之前的任何 Cache-Control 设置。另外,检查一下你的 HTML 文件,确保静态资源的链接没有加一些特殊的参数,比如时间戳或者版本号,这些都会导致浏览器认为资源是新的,从而不走缓存。
如果这些都没有问题,可以试试清除浏览器缓存,有时候浏览器自己也会搞些奇怪的事儿。希望这能帮到你,别再熬夜了。