如何使用must-revalidate缓存HTML页面?

Goo*_*bot 4 etag caching last-modified browser-cache http-headers

当缓存与HTML页面must-revalidate,这意味着浏览器必须检查被定义的任何更新Last-ModifiedEtag.然而,问题是,之前max-age,浏览器不会与该网站进行任何连接读取HTTP标头(分析Last-ModifiedEtag)?

如何强制浏览器做一个简单的连接到阅读(至少)HTTP读者从缓存中加载页面的?

我不明白的用法must-revalidate!以前检查更新是否有责任max-age?因为在到达之后max-age,浏览器将从网站读取并且从不使用本地缓存.

Ben*_*sch 9

是的,您的理解must-revalidate是错误的:它表示缓存在陈旧(即"过期")时可能无法提供此内容,但必须在此之前重新验证.是的,高速缓存(和浏览器)理论上可以设置为即使它们过时也可以提供页面,尽管标准规定他们应该警告用户是否这样做.

要强制浏览器使用服务器重新检查页面,最简单的解决方案是添加max-age=0Cache-Control标头.这将允许您的浏览器在其缓存中保留页面的副本,但可以通过发送Last-Modified或者ETag,根据需要将其与服务器的版本进行比较.

它曾经是你可以添加的no-cache,但是由于用户一直期望这样做no-store,浏览器逐渐对它们进行相同的处理.

有关标头的更多信息,请查看HTTP/1.1 RFC,第14.9节.

  • 如果您重读的14.9.3结束在RFC以上,它提到,不仅可以高速缓存被配置为服务过期响应,客户端(浏览器)可以使用`MAX-stale`表示一个陈旧的响应是好的.它还提到必须附加一个`Warning`标题. (2认同)