http 缓存
1 关于缓存
什么是缓存?
没有必要重新获取的资源 可以存储
为什么需要缓存?
让页面加载更快,减少网络请求和体积,网络请求不稳定
哪些资源可以缓存?
静态资源(js css img)
2 http 缓存策略(强制缓存+协商缓存)
2.1 http缓存 - 强制缓存
Cache-Control
- Response Headers中 服务端返回
- 控制强制缓存的逻辑
- 例如 Cache-Control:max-age=3153600单位是秒
- max-age 过期时间
- no-cache 不用强制缓存
- no-store 不用本地缓存 不用服务端缓存
Expires
- 同在Response Headers 中
- 同为控制缓存过期
- 已被 Cache-Control 代替
2.2 http缓存 - 协商缓存
- 服务器端缓存策略
- 服务器判断客户端资源,是否和服务端资源一样
- 一致则返回304,否则返回200和最新的资源
资源标识
- 在Response Headers中,有两种
- last-modified 资源的最后修改时间
- Etag 资源的唯一标识(一个字符串,类似人类指纹)
last-Modified 和 Etag
- 优先使用Etag
- Last-Modified 只能精确到秒级
- 如果资源被重复生成,而内容不变,则Etag 更精确
2.3 缓存综述
3 刷新操作方式,对缓存的影响
三种刷新操作
- 正常操作:地址栏输入url,跳转链接,前进后退等
- 手动刷新:f5 点击刷新按钮 右侧菜单刷新
- 强制刷新:ctrl+f5
不同刷新操作,不同的缓存策略
- 正常操作:强制缓存有效,协商缓存有效
- 手动刷新:强制缓存失效,协商缓存有效
- 强制刷新:强制缓存失效,协商缓存失效