1. 强缓存和协商缓存分别适用于哪些场景

一、强缓存

强缓存通过Expires和Cache-Control两个响应头实现

1.1 Expires

Expires是http1.0提出的一个表示资源过期时间的header,它描述的是一个绝对时间,由服务器返回
Expires受限于本地时间,如果修改了本地时间,可能会造成缓存失效
如:

  1. Expires: Wed Oct 21 2020 10:58:44 GMT

image.png

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类似