HTTP 缓存
强缓存 VS 协商缓存
| 类型 | 状态码 | 标识符 | 描述 | 适用协议 | 备注 |
|---|---|---|---|---|---|
| 强缓存 | 200 (from cache) | Expires | 设定资源过期时间,受限于本地时间。 | HTTP/1.0 | 优先级低于 Cache-Control |
Cache-Control | 控制资源缓存时间,格式如 max-age=30,优先级高于 Expires。 | HTTP/1.1 | |||
| 协商缓存 | 304 Not Modified200 OK | Last-ModifiedIf-Modified-Since | 服务器响应资源的最后修改时间。若本地缓存版本是最新的,则返回304。客户端请求时带上资源的最后修改时间,询问服务器资源是否有更新。 | HTTP/1.0 | 优先级低于 ETag/If-None-Match |
ETagIf-None-Match | 服务器生成的资源标识符,基于hash。若本地缓存版本是最新的,则返回304。客户端请求时带上资源的ETag值,询问服务器资源是否有更新。 | HTTP/1.1 | 优先级高于 Last-Modified | ||
| 混合策略 | 200 OK | Cache-control: no-store | 完全不存储任何响应的部分,适用于非常敏感的信息。 | - | 每次需要资源时都会重新发起请求 |
304 Not Modified200 OK | Cache-Control: no-cache | 资源可以被缓存,但必须在使用前验证其新鲜度,适用于可能经常更改的信息。 | - | 使用 If-Modified-Since 或 If-None-Match 验证 | |
200 (from cache) | Cache-Control: max-age=31536000 | 对代码文件如js, css等设置长期缓存,并通过文件名hash处理以便更新时立即下载新文件。 | - | 配合版本控制使用 |