为什么Chrome中资源的缓存时间是Date加上max-age的结果

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

我发现了一个让我很困惑的奇怪问题。我有一个 html 页面包含托管在 cdn 服务器上的图像 url,在第一次请求时(就在我上传图像之前),响应标头如下所示 enter image description here

在 180 秒内,请求响应如下所示 enter image description here

180秒后,我清除浏览器缓存并再次请求,响应代码为200,看起来正常 enter image description here 但下一个请求(180秒后)看起来很困惑,响应代码是304 enter image description here 我的问题是,为什么浏览器认为缓存已过期,过期时间是否等于响应头“Date”加上“Cache-Control:max-age”?

google-chrome browser-cache cache-control
1个回答
0
投票

为什么浏览器认为缓存过期了,过期时间是否等于响应头

Date
加上
Cache-Control: max-age

大约是这样。

RFC 9111 指定了如何计算响应的新鲜度。

确定响应是否新鲜的计算是:

response_is_fresh = (freshness_lifetime > current_age)
在这种情况下,

保鲜期

max_age
当前年龄大约是当前时间减去
Date
(详细计算请参阅规范)。如果您查看“令人困惑”的回复的
Date
,您会清楚地看到该回复不再新鲜,因此需要重新验证。

您可能期待一个新的

Date
标头,因为您清除了缓存。但这不会影响 CDN,您可以从标头中看到 CDN 返回了
HIT
。因此,您仍然会看到缓存的响应,只是来自 CDN 而不是浏览器缓存的响应。

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