缓存部分
强缓存
强缓存是 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
实现。
Expires: Web,22 xxx
Cache-control: max-age=30
- expires是http1的,过期时间是本地时间。不可靠
- 一般配合使用,做兼容回退
- 强缓存 200 from cache,只要未过期,只能通过修改路径,变成新资源。也就是加 hash 改变文件名
Cache-Control:
- private 客户端可以缓存
- public 客户端和代理服务器都可以缓存
- max-age=60 缓存内容将在60秒后失效
- no-cache 强缓存失效,走协商缓存。验证数据,强制向源服务器再次验证
- no-store 强缓存失效,协商缓存失效。所有内容都不会缓存。
本地有缓存服务器的概念
协商缓存
协商缓存,304,对于协商缓存,Ctrl+F5可以让缓存无效。
- Last-Modified & If-Modified-Since
- ETag & If-None-Match
缓存设置
CDN
图片来自 https://cloud.tencent.com/document/product/228/2939
参考资料
- 闲话 CDN 对CDN的原理进行了介绍,收益不多,没有消化
其他
- service worker
- memory cache
- disk cache
- push cache 主要是http2,缓存时间短
- 网络请求