Http 什么时候是一个;如果没有匹配的“-请求已发送?

Http 什么时候是一个;如果没有匹配的“-请求已发送?,http,http-headers,http-caching,etag,if-none-match,Http,Http Headers,Http Caching,Etag,If None Match,在优化我们网站的缓存行为时,我注意到大量的(如果没有匹配的话)请求被发送到我们的网站。就我所理解的缓存而言,只要缓存仍然有效,就不应该出现这种情况 一个特定的请求会生成以下响应头: HTTP/1.1 200 OK Cache-Control: public, max-age=25920000 Transfer-Encoding: chunked Content-Type: application/javascript; charset=utf-8 Content-Encoding: gzip E

在优化我们网站的缓存行为时,我注意到大量的
(如果没有匹配的话)请求被发送到我们的网站。就我所理解的缓存而言,只要缓存仍然有效,就不应该出现这种情况

一个特定的请求会生成以下
响应头

HTTP/1.1 200 OK
Cache-Control: public, max-age=25920000
Transfer-Encoding: chunked
Content-Type: application/javascript; charset=utf-8
Content-Encoding: gzip
Expires: Thu, 04 Feb 2016 17:20:09 GMT
Last-Modified: Mon, 01 Jan 2001 23:00:00 GMT
ETag: W/"0"
Vary: Accept-Encoding
Server: Microsoft-IIS/8.5
X-AspNet-Version: 4.0.30319
Date: Fri, 10 Apr 2015 16:20:09 GMT
如您所见,缓存的有效期应为300天。按照我的理解,浏览器应该在这段时间内直接使用缓存。只有在这段时间结束后,如果没有匹配的请求,它才会发出一个标题为
的请求。
但是浏览器似乎忽略了这一点,如果没有匹配的
,则发送此
——每次加载页面时都请求接收
304响应(“未修改”)


我需要做哪些更改以防止浏览器发送这些无用的请求?

是的,当缓存是新的时,浏览器应该使用本地副本而无需重新验证。然而,这并不能保证。例如,当用户使用浏览器时,仍然会向源服务器发出请求


有一个扩展告诉浏览器,你真的是说他们应该在不联系服务器的情况下使用缓存资源。

不知道,但是不会用
缓存控制:max age=600替换HTTP/1.0标记。
?帮助?你能告诉我你大概看到了多少这样的请求吗?可能是客户端重新加载页面造成的?这可能会触发某些浏览器重新验证资源。