如果不设置缓存控制标头,会发生什么?


13

如果不设置cache-control标题会怎样?HTTP是否指定客户端应遵循的默认行为,还是由客户端决定?

在Chrome浏览器中,我看到了一些Javascript请求,其中没有cache-control标头显示为200 (from disk cache)。Chrome是否正在对此进行优化?

在IE中,我看到它显示为304 (not modified)

我如何更好地理解这一点?


1
“没有缓存头”意味着没有缓存控制头,或者实际上没有缓存头?缓存控制不是唯一影响缓存的标头。大多数Web服务器都会发送Java脚本文件之类的静态资产的Last Modified标头。
蒂姆·福恩迪

Answers:


18

如果没有Cache-Control标头,没有Expires标头,但是有Last-Modified标头(大多数Web服务器默认会为静态资产发送标头),则大多数浏览器将使用启发式新鲜度来确定为该资产缓存多长时间。

为此的典型计算(这是RFC 7234建议的计算)为:

(current time - last modified time) / 10

因此,例如,如果某个图像的最后修改时间表示该图像的最后更改时间是60天,则浏览器可能会决定在检查新版本之前合理使用该图像的本地缓存版本达6天。

请注意,在大多数情况下,如果单击“刷新”,则是在告诉浏览器获取新版本,因此在这种情况下,此逻辑将不适用。


1
如果没有Last-Modified标题?
bertonc96
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.