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