【发布时间】:2019-10-03 03:12:29
【问题描述】:
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 通用头字段用于指定指令 用于请求和响应中的缓存机制。
所以 ETag 标头告诉浏览器为资源发送单个 HTTP 请求到服务器并询问文件哈希是否已更改。如果是,请下载一个新的。伟大的。因此,如果设置了 ETag 标头,为什么我还需要 Cache-Control(在 Expires 标头旁边可能有助于避免这个单一请求)?
所以如果我无论如何都必须设置 Cache-Control 标头,那只会是有害的,对吧?我认为最合适的值是:
Cache-Control: must-revalidate
但我不确定这是否会触发不必要的额外操作。
【问题讨论】:
标签: http caching http-headers cache-control etag