【发布时间】:2015-06-16 11:10:33
【问题描述】:
在优化我们网站的缓存行为时,我注意到大量if-none-match-requests 被发送到我们的网站。据我了解缓存,只要缓存仍然有效,就不应该是这种情况。
一个特定的请求会生成以下response-header:
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 天。按照我的理解,浏览器应该在那段时间直接使用它的缓存。只有在这段时间结束后,它才应该发出带有标题if-none-match 的请求。
但是浏览器似乎忽略了这一点,并在每次加载页面时发送这个if-none-match -request 只是为了接收304-response ("Not Modified")。
我需要进行哪些更改以防止浏览器发送这些无用的请求?
【问题讨论】:
-
不知道,但不会用
Cache-Control: max-age=600替换HTTP/1.0 标签?帮忙? -
你能大致说出你看到多少这样的请求吗?可能是来自客户端重新加载页面?这可能会触发某些浏览器重新验证资源。
标签: http http-headers http-caching etag if-none-match