为什么 Lighthouse 使我的缓存文件失败?

Why is Lighthouse failing my cached files?

我正在使用 Google Lighthouse 来计算性能得分。其中一项标准是缓存静态资产,例如图像和脚本。

我无法控制所有这些,但我控制的缓存已设置为 30 天。然而,Lighthouse 仍然将这些作为一个问题进行报告。 Lighthouse 确实 将这些报告为具有 30 天缓存,但仍报告为问题。

我需要做什么来纠正这个问题?

请看下面的截图:

如果您的审核分数不大于或等于 90,Lighthouse 会警告您使用有效的缓存策略 提供静态资产。它还会列出 详情摘要中的所有静态资产(无论是否通过)。

由于您无法控制您的一些静态资产,您的分数似乎低于 90,因此,您仍然在详细信息摘要中看到通过审核的静态资产。

您可以通过将结果保存为 JSON 文件、在任何文本编辑器中打开它并搜索包含“uses-long-cache-ttl".

下面的分数可能会低于 90。

您可以通过访问此 link:

了解有关此特定审计的更多信息

https://developers.google.com/web/tools/lighthouse/audits/cache-policy

我还有一个 30 天的缓存策略,为我解决这个问题的方法是将 public 和 no-cache 值添加到 Cache-Control header.

我只是在测试 Firebase 托管与我的旧主机 IIS 时才发现这一点。 IIS 托管站点正在通过,即使它的 max-age 值较短。我检查了 chrome 中的网络开发人员工具,发现它有 public 并且在我的 Cache-Control header 下的 IIS web.config 中没有缓存值,但是我的 firebase.json 没有这些值。添加后我又通过了!

为什么这个通过对我来说是个谜,但看看你是否可以添加并再次测试。

在我的例子中,要修复 Lighthouse 中的 Serve static assets with an efficient cache policy 错误,我必须将 max-age 值增加到 97 天:

Cache-Control: max-age=8380800

我的 Lighthouse 版本是 5.7.0