http 缓存
- http 缓存策略 (强制缓存 + 协商缓存)
- 刷新操作方式,对缓存的影响
- 关于缓存
- 什么是缓存?
- 为什么需要缓存?
- 页面加载更快 ~
- 哪些资源可以被缓存?
- 静态资源(js、css、img)
- http 缓存 - 强制缓存
- 图解:
- 1、初次请求从服务端获取
- 2、服务端认为这个资源能够缓存,则在响应头部带上Cache-Control
- 3、再次请求,如图
- Cache-Control
- 在 Response Headers 中
- 控制强制缓存的逻辑
- 列如:Cache-Control:max-age=31236000(单位是秒) 则在客户端缓存一年最大时间
- cache-control 的值
- max-age 设置缓存
- no-cache 不缓存但不限制服务端的操作
- no-store 不缓存且限制服务端也不缓存
- private 只允许最终的用户做缓存
- publicb 允许中间的链路也缓存,如路由、代理
- 关于 Expires
- 在 Response Headers 中
- 同为控制缓存过期
- 已被 Cache-Control 代替
- http 缓存 - 协商缓存(对比缓存)
- 服务端缓存策略 (服务端的依据来判断这个资源能不能缓存)
- 服务端判断客户端资源,是否和服务端资源一样
- 一致就返回 304,否则返回 200 和 最新资源 以及资源标识
- 图解:
- 资源标识:
-
在Response Headers 中,有两种:
- Last-Modified 资源的最后修改时间
- Etag 资源的唯一标识 (一个字符串,类似人类的指纹)
-
图解:
-
-
-
例子:
-
-
-
- Last-Modified 和 Etag
- 优先使用Etag
- Last-Modified 只能精确到秒级 而计算机一般是毫秒级
- 如果资源被重复生成,而内容不变,则Etag 更精准,更节约资源
- 流程图
- 图解: