1. 强缓存和协商缓存分别适用于哪些场景
一、强缓存
强缓存通过Expires和Cache-Control两个响应头实现
1.1 Expires
Expires是http1.0提出的一个表示资源过期时间的header,它描述的是一个绝对时间,由服务器返回
Expires受限于本地时间,如果修改了本地时间,可能会造成缓存失效
如:
Expires: Wed Oct 21 2020 10:58:44 GMT
1.2 Cache-Control
Cache-Control 是HTTP/1.1的产物,优先级高于Expires。表示的是相对时间。
缓存请求指令
- max-age=
表示缓存内容将在seconds秒后失效
max-stale<=seconds> 客户端愿意接收一个已经过期了的响应。如果指定了 max-stale的值,则最大容忍时间为对应的秒数。如果没有指定,那么说明浏览器愿意接收任何age的响应(age表示响应由源站生成或确认的时间与当前时间的差值)。
- min-fresh=
能够容忍的最小新鲜度。min-fresh表示了客户端不愿意接受新鲜度不多于当前的age 加上 min-fresh设定的时间之和的响应 - no-cache客户端缓存内容,是否使用缓存则需要经过协商缓存来验证决定.
- no-store 所有内容都不会被缓存,即不使用强制缓存,也不使用协商缓存
缓存响应指令:
- no-cache
- no-transform 中间代理有时会改变图片以及文件的格式,从而达到提高性能的效果。no-transform指令告诉中间代理不要改变资源的格式
- public所有内容都将被缓存(客户端和代理服务器都可缓存)
- private所有内容只有客户端可以缓存,Cache-control 的默认取值
- max-age=
- s-maxage=
与max-age类似