浏览器缓存的两大阶段
1. 强缓存(不发请求,直接用本地)
只要命中强缓存,连请求都不会发给服务器。
触发方式:
Cache-Control: max-age=xxxExpires(旧)
规则:
- 时间没过期 → 直接用缓存
- 时间过期 → 进入协商缓存
2. 协商缓存(发请求,看服务器要不要更新)
浏览器发请求带标识,服务器判断:
- 资源没改 → 返回 304 Not Modified,浏览器继续用缓存
- 资源改了 → 返回 200 + 新资源
标识有两种:
(1)Etag / If-None-Match(优先)
- 服务器生成文件的唯一标识(哈希)
- 第一次响应:
Etag: xxx - 下次请求:
If-None-Match: xxx
(2)Last-Modified / If-Modified-Since
- 服务器返回文件最后修改时间
- 下次请求带上
If-Modified-Since