我正在阅读有关缓存的merging,其中有以下内容:
验证者非常重要;如果一个人不在场,就没有 可用的任何新鲜度信息(Expires或Cache-Control),缓存 不会存储任何代表。
最常见的验证器是文档上次更改的时间, 在Last-Modified标头中传达。当缓存有一个 存储的表示包括Last-Modified标头,它可以使用 询问服务器自上次以来表示是否发生了变化 使用If-Modified-Since请求的时间。
所以,我想知道即使我指定了Cache-Control: max-age=3600
,浏览器是否继续为资源发送请求(例如HEAD)?如果没有,那么这个标题中的重点是什么?它是在max-age
时间过后使用的吗?
答案 0 :(得分:2)
Cache-Control: max-age=3600
标头表示浏览器会将响应缓存最多3600秒。在那个时间过去之后,如果没有首先确认它仍然是新鲜的,它可能不再服务于响应。
为此,浏览器可以:
GET
请求获取完整资源(再次传输整个响应正文)If-None-Match
)或 Last-Modified 标题(If-Modified-Since
)执行重新验证,即仅限客户端如果实际已更改,则获取响应正文。当然,只有在原始响应中出现验证器时才可以这样做。 简而言之:同时使用max-age
和缓存验证程序的原因是首先缓存响应一段时间,然后执行带宽保存重新验证以确认资源&#39新鲜感。