Warm tip: This article is reproduced from serverfault.com, please click

caching-在http响应中没有Cache-Control标头的ETag

(caching - ETag with no Cache-Control header in http response)

发布于 2016-06-02 19:51:54

我正在尝试学习有关HTTP的一些基础知识。我检查了一些HTTP响应标头,发现使我感到困惑的两件事:

  • 没有缓存控制标头和

  • ETag标头存在。

我理解ETag的方式是,客户端在请求中将ETag发送到缓存,然后缓存通过服务器重新验证资源Etag。但是,如果没有响应的Cache-Control标头,则所有后续请求都直接与服务器进行重新验证,并完全省略缓存。是这种情况还是我错过了什么?当没有缓存控制标头作为响应时,还会发生其他事情吗?如果所有请求仍然直接发送到服务器,为什么还会显示ETag?

Questioner
sanjihan
Viewed
0
Barry Pollard 2016-06-12 04:21:47

缺少缓存控制标头并不意味着无法缓存资源-由客户端(即Web浏览器)决定如何处理此不确定状态。

对它进行缓存(无论是在内存中还是在磁盘中),并且仅在ETag验证的情况下才使用该缓存版本对我来说似乎是一个完全合理的实现。

如果你不希望缓存资源,则应使用“ max-age = 0,不存储,不缓存,必须重新验证”的缓存控制标头明确地说明这一点。