如何强制浏览器使用expire(而不是etags /修改时间)

时间:2016-03-14 21:48:46

标签: performance caching browser-cache

我有一台服务器提供1年过期的静态文件但我的浏览器仍然获得该文件并收到304 - 未修改。我想阻止浏览器尝试连接。我意识到这种情况发生在使用Chrome和Firefox的几种不同设置(Ubuntu Linux)中。

我的测试如下:

$ wget -S -O /dev/null http://trepalchi.it/static/img/logo-trepalchi-black.svg
--2016-03-14 19:56:14--  http://trepalchi.it/static/img/logo-trepalchi-black.svg
Risoluzione di trepalchi.it (trepalchi.it)... 213.136.85.40
Connessione a trepalchi.it (trepalchi.it)|213.136.85.40|:80... connesso.
Richiesta HTTP inviata, in attesa di risposta... 
  HTTP/1.1 200 OK
  Server: nginx/1.2.1
  Date: Mon, 14 Mar 2016 18:55:29 GMT
  Content-Type: image/svg+xml
  Content-Length: 25081
  Last-Modified: Sun, 13 Mar 2016 23:03:53 GMT
  Connection: keep-alive
  Expires: Tue, 14 Mar 2017 18:55:29 GMT
  Cache-Control: max-age=31536000
  Cache-Control: public
  Accept-Ranges: bytes
Lunghezza: 25081 (24K) [image/svg+xml]
Salvataggio in: "/dev/null"

100%[==================================================================================================================================================================>] 25.081      --.-K/s   in 0,07s   

2016-03-14 19:56:14 (328 KB/s) - "/dev/null" salvato [25081/25081]

这表明正确提供了过期和缓存控制(通过nginx)。 如果我去浏览器并启用缓存并打开诊断工具,第一次点击我注意到200返回代码,然后我刷新页面(Control-r)并找到304连接 - 没有修改返回代码。

检查firefox缓存(about:cache)我发现它正确到期并点击该页面中的链接,我能够看到它没有点击远程服务器。

我还测试了从图像标签加载图像的页面(与上面示例中直接调用的相反)。

我读过的所有文章声明,如果过期,浏览器甚至不应该尝试连接。怎么了? RFC 2616州:

  

当缓存可以完全避免发出请求时,HTTP缓存效果最佳   到原始服务器。避免请求的主要机制是   原始服务器提供明确的到期时间   未来,表明可以使用响应来满足后续要求   要求。换句话说,缓存可以在没有的情况下返回新的响应   首先联系服务器。

注意another question解决了304如何生成的问题,我只是想阻止连接 桑德罗 感谢

0 个答案:

没有答案