san*_*han 5 etag caching http http-headers
我正在尝试学习一些有关 HTTP 的基础知识。我检查了一些 HTTP 响应标头并注意到两件事让我感到困惑:
没有缓存控制头和
存在 ETag 标头。
我理解 ETag 的方式是,客户端在请求中将 ETag 发送到缓存,然后缓存与服务器重新验证资源 Etag。但是如果没有 Cache-Control 标头响应,那么所有后续请求都会直接与服务器进行重新验证并完全省略缓存。是这种情况还是我错过了什么?当响应中没有缓存控制标头时,还会发生其他事情吗?如果所有请求都将直接发送到服务器,为什么 ETag 甚至存在?
没有缓存控制头并不意味着资源不能被缓存——由客户端(即网络浏览器)决定如何处理这个未定义的状态。
缓存它(无论是在内存中还是在磁盘中)并且仅在 ETag 验证时才使用该缓存版本对我来说似乎是一个完全合理的实现。
如果您不希望缓存资源,那么您应该使用“max-age=0, no-store, no-cache, must-revalidate”的缓存控制标头明确说明这一点。
| 归档时间: |
|
| 查看次数: |
2742 次 |
| 最近记录: |