HTTPcaching控制最大年龄,必须重新validation

我有几个与Cache-Control有关的查询。

如果我指定了Cache-Control max-age=3600, must-revalidate对于静态的html / js / images / css文件,必须使用HTTP标头中定义的Last Modified Header max-age=3600, must-revalidate

  1. 在max-age过期之前,浏览器/代理caching(如Squid / Akamai)是否会一直到源服务器validation? 或者它会提供内容从caching到最大年龄到期?
  2. 在最大期限到期(即从caching到期)之后,是否存在If-Modified-Since检查或者是否从原始服务器重新下载了内容,而不是If-Modified-Since检查?

a)如果服务器包含这个头文件:

 Cache-Control "max-age=3600, must-revalidate" 

它告诉客户端caching和代理caching一旦内容陈旧(大于3600秒),他们必须在原始服务器上重新生效,然后才能提供内容。 这应该是caching系统的默认行为,但must-revalidate指令使得这个要求是明确的。

b)客户应该重新validation。 它可能会使用Ifag If-MatchIf-None-Match标头对ETag进行重新validation,也可能使用带有date的If-Modified-SinceIf-Unmodified-Since标头。

一个。 看看这个页面上的“统计”标签,看看会发生什么。

湾 到期后,浏览器将检查服务器是否更新文件。 如果没有,服务器将回应一个304 Not Modified标题,并且没有下载。

您可以通过查看Firebug或类似工具中的“Net”面板来自行检查此行为。 只需在地址栏中重新inputURL,并将caching为空时的HTTP请求数与请求数进行比较。