| 首部 | 描述 |
|---|---|
| Cache-Control | 用于随报文传中缓存指示 |
| Pragma | 另一种随报文传送指示的方式,但并不专用于缓存 |
| 首部 | 描述 |
|---|---|
| If-Match | 如果实体标记与文档当前的实体标记相匹配,就获取这份文档 |
| If-Modified-Since | 除非在某个指定的日期之后资源被修改过,否则就限制这个请求 |
| If-None-Match | 如果提供的实体标记与当前文档的实体标记不相符,就获取文档 |
| If-Unmodified-Since | 除非在某个指定日期之后资源没有被修改过,否则限制这个请求 |
| 首部 | 描述 |
|---|---|
| ETag | 与此实体相关的实体的实体标记 |
| Expires | 实体不再有效,要从原始的源端再次获取此实体的日期和时间 |
| Last-Modified | 这个实体最后一次被修改的日期和时间 |
注:
- 从技术角度来看,Pragma 是一种请求首部,优先试用 Cache-Control 代替其控制缓存策略、
- 实体标记本质上为某个特定资源版本的标识符
- 优先级从高到低分别是 Pragma > Cache-Control > Expires
若存在资源且未过期则返回 200 OK (from [memory | disk] cache),否则从服务器重新获取资源
- 刷新按钮/右键重新加载按钮
F5orcommand + rlocation.reload()
添加以下 Headers
Cache-Control: max-age=0
If-Modified-Since: [资源的Last-Modified头部]
If-None-Match: [资源的ETag头部] # 当资源的 Response 携带 ETag 时- 勾选 Network 面板 Disable cache 复选框
ctrl + F5orcommand + shift + r
添加以下 Headers 并移除 If-Modified-Since/If-None-Match Headers
Cache-Control: no-cache
Pragma: no-cache在没有提供任何浏览器缓存过期策略的情况下,浏览器遵循一个启发式缓存过期策略:
根据响应头中 Date 与 Last-Modified 首部之间差值的 10%作为缓存时间
HTTP/1.1 Cache-Control Header is present: private HTTP Last-Modified Header is present: Tue, 08 Nov 2016 06:59:00 GMT No explicit HTTP Cache Lifetime information was provided. Heuristic expiration policies suggest defaulting to: 10% of the delta between Last-Modified and Date. That's '05:15:02' so this response will heuristically expire 2016/11/11 0:46:01.