浏览器缓存

105 阅读1分钟

浏览器分为协商缓存和强制缓存

强制缓存

强制缓存在请求头上 在HTTP1.0中使用Expires 在HTTP1.1中使用Cache-Control 都存在时Cache-Control为主

过程:发起请求 ---- 浏览器根据Expires和Cache-Control判断资源是否命中"强制缓存" ---- 命中则直接缓存取资源,不请求服务器

Cache-control主要取值为:

  • public:所有内容都被缓存,客户端和代理服务器也缓存
  • private:所有内容只有客户端缓存(此项为Cache-control的默认值)
  • no-cache:客户端缓存内容,但是是否缓存需要协商缓存验证决定
  • no-store:所有内容都不会被缓存,既不强制也不协商
  • max-age=xxx:缓存内容将xxx秒后失效
  • must-revalidate: 强制浏览器严格遵守你设置的cache规则
  • proxy-revalidate: 强制proxy严格遵守你设置的cache规则

协商缓存

强制缓存失效 ---- 触发协商缓存 ---- 客户端携带协商缓存标识向服务器发起请求 ---- 在服务器决定缓存标识是否有效

出现两种情况

  • 协商缓存生效,返回304
  • 协商缓存失效,返回200和结果

强制和协商的逻辑图

image.png