如何设置nginx缓存头以永不过期?

5

现在我正在使用这个:

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

这是我在Firebug中看到的:

这里输入图片描述

有用吗?如果我没弄错,我的浏览器再次请求文件,而nginx回答“未修改”,所以我的浏览器使用缓存。但是我认为浏览器甚至不应该请求文件,因为它已经知道它永远不会过期。

您有什么想法吗?

2个回答

4

不要使用F5重新加载页面。使用点击URL +回车或单击链接的方式。这就是我只收到一个请求的方法。


但是如何才能为F5或刷新按钮点击缓存文件呢? - Raghvendra Parashar

2
显然,您的文件并不过期,因为其最大年龄和到期日期仍然有效,因此浏览器不会与服务器通信。只有在文件过期时,即其缓存控制(最大年龄)已过或到期日期已过时,浏览器才会请求文件。在这种情况下,它将询问服务器给定的副本是否仍然有效。如果是,则提供相同的副本;否则,将获取新的副本。
更新:
请注意,F5 / 刷新将始终使浏览器请求服务器以查看是否有任何修改。请求标头中将包含If-Modified-Since。这与仅导航站点、返回页面和单击事件不同,在这些情况下,浏览器不会要求服务器,并且静默地从缓存中加载(无服务器调用)。此外,如果您正在Firefox Live HTTP Headers上测试,则它将准确显示所请求的内容,而Firebug将始终向您显示If-Modified-Since。Safari的开发人员菜单应该显示加载时间为0。希望对您有所帮助。

1
那么为什么我的浏览器会发出“GET all.css”请求呢?我不想让浏览器检查文件是否已被修改。我想避免这个不必要的请求。这可行吗? - ChocoDeveloper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接