Chrome是否违反缓存标准?

时间:2016-01-13 08:28:51

标签: javascript asp.net google-chrome caching

我们注意到Chrome在本地缓存文件,甚至没有向我们的服务器发送请求以检查是否有更新版本的javascript文件。

Google缓存的js文件的HTTP响应标头示例:

Accept-Ranges:bytes
Access-Control-Allow-Headers:Content-Type
Access-Control-Allow-Methods:GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Origin:*
Content-Encoding:gzip
Content-Length:5479
Content-Type:application/javascript
Date:Tue, 12 Jan 2016 22:46:07 GMT
ETag:"7d68e1ceb647d11:0"
Last-Modified:Tue, 05 Jan 2016 12:44:25 GMT
Server:Microsoft-IIS/8.5
Vary:Accept-Encoding
x-robots-tag:noindex

Chrome缓存文件是否有效?没有Cache-control标头或者声明文件可以在本地缓存的东西,它只有ETag和Last-Modified。

顺便说一句

是否有办法(可能是标题)指示Chrome检查缓存文件是否已更改而不将文件附加到文件名?设置no-cache不是一个选项,因为我希望它被缓存,但我想要使用ETag和Last-Modified标头。

1 个答案:

答案 0 :(得分:3)

  

除非受到缓存控制的特别限制(第14.9节)   指令,缓存系统可以始终存储成功的响应   (参见13.8节)作为缓存条目,可以在不进行验证的情况下返回它   如果它是新鲜的,并且可以在成功验证后返回它。

您始终可以使用must-revalidate指令。

  

当收到的响应中存在must-revalidate指令时   通过缓存,该缓存在变为陈旧后不得使用该条目   在没有首先重新验证它的情况下响应后续请求   原始服务器。

Source