缓存部分

强缓存 协商缓存

强缓存

强缓存是 http 里的概念,给网络资源设定过期时间,当一个网络请求在发起前,发现已有缓存副本并且设定了相关参数,就会触发强缓存,不在发出网络请求。 在 http1.0 和 http1.1 中有不同的方式来控制: 1.0 粗颗粒度地使用 expire 来使用 1.1 使用 cache-control 来控制,值有:

  • no-cache 一个 ×,不走强缓存,走协商缓存
  • no-store 两个 ×,不走强缓存,不走协商缓存
  • max-age=300,300s 之后过期

通过 http1.0里的 expires 和 http1.1的cache-control 实现。

  1. Expires: Web,22 xxx
  2. Cache-control: max-age=30
  • expires是http1的,过期时间是本地时间。不可靠
  • 一般配合使用,做兼容回退
  • 强缓存 200 from cache,只要未过期,只能通过修改路径,变成新资源。也就是加 hash 改变文件名

Cache-Control:

  • private 客户端可以缓存
  • public 客户端和代理服务器都可以缓存
  • max-age=60 缓存内容将在60秒后失效
  • no-cache 强缓存失效,走协商缓存。验证数据,强制向源服务器再次验证
  • no-store 强缓存失效,协商缓存失效。所有内容都不会缓存。

本地有缓存服务器的概念
image.png

协商缓存

协商缓存,304,对于协商缓存,Ctrl+F5可以让缓存无效。

  • Last-Modified & If-Modified-Since
  • ETag & If-None-Match

image.png

缓存设置

CDN

image.png
图片来自 https://cloud.tencent.com/document/product/228/2939

参考资料

  • 闲话 CDN 对CDN的原理进行了介绍,收益不多,没有消化

其他

  1. service worker
  2. memory cache
  3. disk cache
  4. push cache 主要是http2,缓存时间短
  5. 网络请求