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

时间:2012-08-18 06:13:00

标签: caching nginx http-headers

现在我正在使用它:

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

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

enter image description here

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

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

请勿使用F5重新加载页面。使用点击网址+输入,或点击链接。这就是我如何只收到1个请求。

答案 1 :(得分:1)

显然,您的文件不是陈旧的,因为其最大年龄和失效日期仍然有效,因此浏览器不会与服务器通信。除非文件过时,否则浏览器不会要求该文件。即它的缓存控制(max -age)结束或有效期已经过去。在这种情况下,如果给定的副本仍然有效,它将询问服务。如果是,它将提供相同的副本,否则它将获得新的。

更新:

看,这是事情。如果修改了任何内容,F5 / refresh将始终使浏览器请求服务器。它将在Request标头中具有If-Modified-Since。虽然它与仅浏览网站不同,回到页面并点击浏览器不会询问服务器的事件,并静默加载缓存(无服务器调用)。此外,如果您正在测试firefox Live HTTP Headers,它将向您显示所请求的内容,而Firebug将始终显示If-Modified-Since。 Safari的开发人员菜单应该将加载时间显示为0.希望它有所帮助。