Lighthouse跑分时为什么总提示“未建立缓存策略”?

码农诗雅 阅读 31

我用 Lighthouse 测性能,每次都会报“未建立缓存策略”,但我的静态资源明明加了 Cache-Control: max-age=31536000 啊。是不是哪里没配对?

我用的是 Nginx,配置里写了:

location ~* .(js|css|png|jpg|jpeg|gif|ico|svg)$ {
    expires 1y;
    add_header Cache-Control "public, immutable";
}

本地 curl 看响应头也有缓存字段,但 Lighthouse 还是报这个警告,到底咋回事?

我来解答 赞 6 收藏
二维码
手机扫码查看
2 条解答
慕容伊糖
Lighthouse 这货有时候会抽风,其实你的配置没问题。懒人方案是加个 add_header Cache-Control "max-age=31536000, public, immutable"; 直接覆盖所有情况,别用 expires 了。

完整配置这么写:
location ~* .(js|css|png|jpg|jpeg|gif|ico|svg)$ {
add_header Cache-Control "max-age=31536000, public, immutable";
}


另外检查下是不是有别的配置覆盖了header,nginx配置顺序很坑爹的。
点赞
2026-03-06 16:08
设计师艺凝
你这问题大概率是 Nginx 的 304 响应搞的鬼。Nginx 默认只在 200、204 等几个状态码下加 add_header,Lighthouse 抓到 304 响应时就没缓存头了,必须加上 always 关键字强制加上。

location ~* .(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires 1y;
add_header Cache-Control "public, immutable" always;
}
点赞 2
2026-03-04 08:33