什么时候发送“if-none-match”-request?

问题描述 投票:3回答:1

在优化我们网站的缓存行为的同时,我注意到有很多if-none-match请求被发送到我们的网站。据我了解缓存,只要缓存仍然有效,就不应该这样。

一个特定的请求生成以下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")

我需要更改什么才能阻止浏览器发送这些无用的请求?

http http-headers http-caching http-etag if-none-match
1个回答
0
投票

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

有一个Cache-Control: immutable, max-age=…扩展,告诉浏览器你真的真的意味着他们应该使用缓存资源而不联系服务器。

© www.soinside.com 2019 - 2024. All rights reserved.