4

现在我正在使用这个:

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

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

在此处输入图像描述

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

有什么想法吗?

4

2 回答 2

3

不要使用 F5 重新加载页面。使用单击 url + 输入,或单击链接。这就是我只收到1个请求的方式。

于 2012-08-20T04:51:21.033 回答
1

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

更新 :

看,事情就是这样。F5/refresh 将始终让浏览器请求服务器是否有任何修改。它将在请求标头中有 If-Modified-Since。虽然它与仅导航站点不同,但返回到浏览器不会询问服务器的页面和点击事件,并从缓存中静默加载(无服务器调用)。此外,如果您在 firefox Live HTTP Headers 上进行测试,它会准确显示请求的内容,而 Firebug 将始终显示 If-Modified-Since。Safari 的开发者菜单应显示加载时间为 0。希望对您有所帮助。

于 2012-08-18T06:30:49.250 回答