如何在 Nginx 中设置缓存永不过期并最小化请求?

Cho*_*per 6 nginx http-headers

我有一个缓存失效系统,所以我需要将 css|js 的缓存设置为永不过期。

我试过这个

location ~* \.(js|css)$ { # |png|jpg|jpeg|gif|ico
  expires max;
  #log_not_found off; # what's this for?
}
Run Code Online (Sandbox Code Playgroud)

这就是我在萤火虫中看到的:

在此处输入图片说明

如您所见,请求仍在进行中,尽管它们只收到“未修改”的响应。但我想完全避免它们,这可能吗?

另外,我已经读到超过 1 年的到期在标准中是或将被视为无效的。真的吗?

编辑

让我完成@DisgruntledGoat 的回答:

  • 对 url 的正常访问,例如单击链接或在 url 栏中 + enter: 缓存有效,对该 url 仅发出 1 个请求,为资产发出 0 个请求。
  • F5 重新加载:发出了许多请求,但您收到资产的所有“304 未修改”响应,因此不会下载它们
  • ctrl + F5 无需缓存重新加载:许多请求,所有“200 成功”,再次下载所有资产。

Dis*_*oat 5

您是否正在重新加载页面以进行测试?当您这样做时,浏览器通常会再次请求每个文件(至少 Chrome 会这样做)。如果您改为单击站点上不同页面的链接,浏览器应该只使用缓存而不是重新请求文件。

此外,根据规范,该Expires指令的日期只能是未来一年,因此 2037 是无效值。话虽如此,浏览器通常接受远未来值就好了。