16-2 强制缓存和协商缓存

Posted by CodingWithAlice on April 26, 2021

16-2 强制缓存和协商缓存

主要参考文章:强制/协商缓存

核心要点记录:

  • 缓存机制的关键
    • 浏览器每次发起请求,都会先在 浏览器缓存 中查找该请求的结果以及缓存标识
    • 浏览器每次拿到返回的请求结果都会将该 结果和缓存标识 存入浏览器缓存中

强制缓存 -> 浏览器缓存 Cache-Control > Expires

  • 定义:向 浏览器缓存 查找该请求结果,并根据该结果的缓存规则来决定是否使用该缓存结果的过程

  • 响应头 中控制强制缓存的字段:Cache-Control > Expires

  • 三种情况:

    • 不存在该缓存结果和缓存标识,强制缓存失效 -> 直接向服务器发起请求

      image-20210701172534130

    • 存在该缓存结果和缓存标识,但该结果已失效,强制缓存失效,则使用协商缓存

      image-20210701172306502

    • 存在该缓存结果和缓存标识,且该结果尚未失效,强制缓存生效,直接返回该结果

      image-20210701172417407

协商缓存 -> 服务器请求 Etag/If-None-Match > Last-Modified/If-Modified-Since

  • 定义:强制缓存失效后,浏览器携带缓存标识 向服务器发起请求,由服务器根据缓存标识决定是否使用缓存的过程

  • 响应头 中协商缓存的标识:

    Etag / If-None-Match > Last-Modified / If-Modified-Since(优先级)

  • 两种情况:

    • 协商缓存生效,返回 304 not modified - 表示该资源暂无更新

      image-20210701175020077

    • 协商缓存失效,返回 200 OK 和请求结果结果

      image-20210701175117502

强制缓存和协商缓存的时序流程图

image-20210701180323319