Chrome是否违反缓存标准?

gdo*_*ica 8 javascript asp.net caching google-chrome

我们注意到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
Run Code Online (Sandbox Code Playgroud)

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


BTW

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

小智 3

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

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

当缓存收到的响应中存在必须重新验证指令时,该缓存不得在该条目变得过时后使用该条目来响应后续请求,而无需先与源服务器重新验证该条目。

来源