强缓存
- expires 规定什么时候过期
- cache-control
1.max-age 缓存最大过期时间
2.no-cache 可以在客户端储存资源,每次都必须去服务端校验新鲜度,来决定从服务器获取新的资源(200)还是使用客户端的缓存(304)
3.no-store 永远都不在客户端储存资源,每次都是从服务器获取新资源
cache-control优先级大于expires
协商缓存(服务器端的缓存策略)
服务端判断客户端资源是否和服务端一致,一致返回304,否则返回200和新资源
Response Headers中,主要有两种
- Last-Modified: 资源最后修改的时间
- Etag: 资源的唯一标识(一个字符串,例如hash)
优先使用Etag,因为Last-Modified只能精确到秒级。另外如果资源重复生成,而内容不变,则Etag更精确。
正常流程 ,判断强制缓存有效后直接用缓存,如果失效再判断协商缓存。
三种操作对缓存的影响
- 正常操作:地址栏输入url,跳转链接。 缓存都有效
- 手动刷新(F5等): 强制缓存失效,协商缓存有效
- 强制刷新: 都失效