我有一台服务器提供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如何生成的问题,我只是想阻止连接 桑德罗 感谢