一份http的缓存清单

http 缓存

  • http 缓存策略 (强制缓存 + 协商缓存)
  • 刷新操做方式,对缓存的影响

  • 关于缓存
    • 什么是缓存?
    • 为何须要缓存?
      • 页面加载更快 ~
    • 哪些资源能够被缓存?
      • 静态资源(js、css、img)

  • http 缓存 - 强制缓存
    • 图解:
      • 一、初次请求从服务端获取
      • 二、服务端认为这个资源可以缓存,则在响应头部带上Cache-Control
      • 三、再次请求,如图
      • image.png
      • image.png
    • Cache-Control
      • 在 Response Headers 中
      • 控制强制缓存的逻辑
      • 列如:Cache-Control:max-age=31236000(单位是秒) 则在客户端缓存一年最大时间
      • cache-control 的值
        • max-age 设置缓存
        • no-cache 不缓存但不限制服务端的操做
        • no-store 不缓存且限制服务端也不缓存
        • private 只容许最终的用户作缓存
        • publicb 容许中间的链路也缓存,如路由、代理

    • 关于 Expires
      • 在 Response Headers 中
      • 同为控制缓存过时
      • 已被 Cache-Control 代替

    • http 缓存 - 协商缓存(对比缓存)
      • 服务端缓存策略 (服务端的依据来判断这个资源能不能缓存)
      • 服务端判断客户端资源,是否和服务端资源同样
      • 一致就返回 304,不然返回 200 和 最新资源 以及资源标识
      • 图解:
        • 协商缓存
        • 资源标识:
          • 在Response Headers 中,有两种:css

            • Last-Modified 资源的最后修改时间
            • Etag 资源的惟一标识 (一个字符串,相似人类的指纹)
          • 图解:缓存

          • image.png

          • image.png

          • 例子:markdown

          • image.png

          • image.png


      • Last-Modified 和 Etag
        • 优先使用Etag
        • Last-Modified 只能精确到秒级 而计算机通常是毫秒级
        • 若是资源被重复生成,而内容不变,则Etag 更精准,更节约资源

      • 流程图
      • image.png
相关文章
相关标签/搜索