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

时间:2016-06-02 19:51:54

标签: http caching http-headers etag

我正在尝试学习一些关于HTTP的基础知识。我已经检查过一些HTTP响应标题,并发现了两件令我困惑的事情:

  • 没有缓存控制标头和

  • ETag标题存在。

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

1 个答案:

答案 0 :(得分:4)

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

缓存它(无论是在内存中还是在磁盘中)并且仅在ETag验证时才使用该缓存版本对我来说似乎是一个非常合理的实现。

如果您不想缓存资源,那么您应该使用“max-age = 0,no-store,no-cache,must-revalidate”的缓存控制标头明确说明这一点。