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

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

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

我试过这个

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

这是我在 Firebug 中看到的:

在此处输入图片描述

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

另外,我读到,标准规定超过 1 年的有效期将被视为无效。这是真的吗?

编辑

让我完成@DisgruntledGoat 的回答:

  • 正常访问 URL,例如单击链接或在 URL 栏中输入:cache 有效,仅针对该 URL 发出 1 个请求,针对资产发出 0 个请求。
  • F5 重新加载:发出了许多请求,但您收到的都是资产的“304 未修改”响应,因此未下载这些资产
  • ctrl + F5 无需缓存即可重新加载:许多请求,所有“200 成功”,所有资产均再次下载。

答案1

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

此外,根据规范,该Expires指令只能使用一年后的日期,因此 2037 年是无效值。话虽如此,浏览器通常可以很好地接受遥远的未来值。

答案2

您无法通过其他方式完成此操作,请尝试。这取决于客户端浏览器如何处理缓存。设置缓存不应超过修改日期一年来源

Nginx 非常高效,如果每天的访客数量少于 1,000,000,您真的不必担心发送到 Nginx 的请求。如果是带宽问题,如果浏览器收到 304 响应,它仍会使用缓存中的数据,因此不会浪费带宽。

相关内容