Chrome硬重载/清空缓存硬重载时,如何决定是否添加Cache-Control: no-cache?
Chrome硬重载时的缓存控制逻辑疑问
当打开开发者工具并勾选Disable Cache时,Chrome会为所有请求自动添加Cache-Control: no-cache请求头。但我发现,按下Ctrl+F5执行硬重载,或是点击Chrome的Empty Cache and hard reload按钮时,只有部分请求会被添加这个请求头,另一部分则不会。想搞清楚Chrome是依据什么规则来决定为哪些请求添加该字段的?
以下是我遇到的具体示例:
初始条件(正常加载状态)
- 请求1和请求2的请求头:无
Cache-Control字段 - 请求1和请求2的响应头:均包含
Cache-Control: public,max-age=3600→ 两者都被浏览器缓存
| 场景 | 请求1 — 请求头 | 请求1 — 结果 | 请求2 — 请求头 | 请求2 — 结果 |
|---|---|---|---|---|
| 基准(正常加载) | (无) | 200 来自服务器;已缓存(max-age=3600) | (无) | 200 来自服务器;已缓存(max-age=3600) |
| 场景1:硬重载(Ctrl+F5) | Cache-Control: no-cache (浏览器自动添加) | 从服务器重新获取 | (无) | 从磁盘缓存加载 |
| 场景2:清空缓存 + 硬重载 | Cache-Control: no-cache (浏览器自动添加) | 从服务器重新获取 | (无) | 从服务器重新获取 |
我很困惑:为什么执行硬重载或清空缓存硬重载时,浏览器只给请求1添加Cache-Control: no-cache,却不给请求2添加?
内容的提问来源于stack exchange,提问作者pycxu
相关产品推荐
相关产品推荐

