HTTP:ETag标头是否使Cache-Control标头过时?如何确保Cache-Control无害?

问题描述 投票:-1回答:1

ETag标题(https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag)的定义:

ETag HTTP响应头是特定版本资源的标识符。它允许缓存更高效,并节省带宽,因为如果内容未更改,Web服务器不需要发送完整响应。另一方面,如果内容已经改变,则etags有助于防止资源的同时更新互相覆盖(“空中碰撞”)。

Cache-Control标头的定义(https://developer.mozilla.org/de/docs/Web/HTTP/Headers/Cache-Control):

Cache-Control general-header字段用于为请求和响应中的缓存机制指定指令。

因此ETag标头告诉浏览器资源向服务器发送单个HTTP请求并询问文件哈希是否已更改。如果是,请下载新的。大。因此,如果设置了ETag标头,我为什么还需要Cache-Control(除了Expires标头之外可能有助于避免这个单一请求)?

因此,如果我必须设置Cache-Control标头,它只会是有害的吗?我认为最合适的价值是:

Cache-Control: must-revalidate

但我不确定这是否会引发不必要的额外行动。

http caching http-headers cache-control etag
1个回答
1
投票

经过一些研究,我找到了Alex Barashkov的一个很棒的教程:"Best practices for cache control settings for your website"

Alex写道:

我建议你将Cache-Control: no-cache应用于html文件。应用“no-cache”并不意味着根本没有缓存,它只是告诉浏览器在从缓存中使用它之前验证服务器上的资源。这就是为什么我们需要将它与Etag一起使用,因此浏览器将发送一个简单的请求并加载额外的80个字节来验证文件的状态。

© www.soinside.com 2019 - 2024. All rights reserved.