即使使用`Cache-Control:max-age`,浏览器是否继续发送资源请求

时间:2016-10-31 12:19:45

标签: javascript caching

我正在阅读有关缓存的merging,其中有以下内容:

  

验证者非常重要;如果一个人不在场,就没有   可用的任何新鲜度信息(Expires或Cache-Control),缓存   不会存储任何代表。

     

最常见的验证器是文档上次更改的时间,   在Last-Modified标头中传达。当缓存有一个   存储的表示包括Last-Modified标头,它可以使用   询问服务器自上次以来表示是否发生了变化   使用If-Modified-Since请求的时间

所以,我想知道即使我指定了Cache-Control: max-age=3600,浏览器是否继续为资源发送请求(例如HEAD)?如果没有,那么这个标题中的重点是什么?它是在max-age时间过后使用的吗?

1 个答案:

答案 0 :(得分:2)

Cache-Control: max-age=3600标头表示浏览器会将响应缓存最多3600秒。在那个时间过去之后,如果没有首先确认它仍然是新鲜的,它可能不再服务于响应。

为此,浏览器可以:

  • 使用正常GET请求获取完整资源(再次传输整个响应正文)
  • 或者根据 ETag If-None-Match)或 Last-Modified 标题(If-Modified-Since)执行重新验证,即仅限客户端如果实际已更改,则获取响应正文。当然,只有在原始响应中出现验证器时才可以这样做。

简而言之:同时使用max-age和缓存验证程序的原因是首先缓存响应一段时间,然后执行带宽保存重新验证以确认资源&#39新鲜感。