我有几个与Cache-Control相关的查询。
如果我为静态html / js / images / css文件指定Cache-Control max-age=3600, must-revalidate
,并在HTTP标头中定义了Last Modified Header:
答案 0 :(得分:52)
a)如果服务器包含此标题:
Cache-Control "max-age=3600, must-revalidate"
它告诉客户端缓存和代理缓存,一旦内容过时(超过3600秒),它们必须在原始服务器上重新验证才能提供内容。这应该是缓存系统的默认行为,但must-revalidate
指令使此要求明确无误。
b)客户应重新验证。它可能会使用带有ETag的If-Match
或If-None-Match
标头进行重新验证,也可能会使用带有日期的If-Modified-Since
或If-Unmodified-Since
标头。
答案 1 :(得分:4)
一个。查看this page上的“统计信息”标签,看看会发生什么。
湾到期后,浏览器将在服务器上检查文件是否已更新。如果没有,服务器将使用304 Not Modified
标头进行响应,并且不会下载任何内容。
您可以通过查看Firebug中的“Net”面板或类似工具来自行检查此行为。只需在地址栏中重新输入URL,并将缓存为空时的HTTP请求数与请求数进行比较。
答案 2 :(得分:0)
给出的答案不正确,至少对于2019年的Web浏览器而言。
“到期后,浏览器将在服务器上检查文件是否已更新”。<-不是true
我有一个带有“缓存控制:public,must-revalidate,max-age = 864000”的静态文件,Chrome和Firefox每次都发出请求(并每次返回304 Not Modified)。 / p>