浏览器缓存相关的话题
请参考链接:https://www.cnblogs.com/tugenhua0707/p/10807289.html
根据上面的链接,需要掌握如下知识点
- 浏览器的协商缓存
- Last-Modified 与 If-Modified-Since
- ETag 与 If-None-Match
- 浏览器的强制缓存
- Expires:
- Cache-Control:
我下面简单的说几句,详细的介绍还是请到上面的链接中学习体会
1) 协商缓存,和服务器通信,决定请求是否返回304(Not modified)
- Etag是服务器按照一定算法生成的hash值
- Last-Modified的值是GMT格式的时间,也就是文件被修改的时间
优先级 ETag > Last-Modified
2)强制缓存,根据Cache-Control的值,决定是否回服务器通信,如果不回服务器通信就代表强制缓存
- Expires 是http 1.0的规范,其值是GMT格式时间
- Cache-Control 是http 1.1的规范,其值如下
- no-cache: 需要进行协商缓存,发送请求到服务器确认是否使用缓存
- no-store:禁止使用缓存,每一次都要重新请求数据。
- public:可以被所有的用户缓存,包括终端用户和 CDN 等中间代理服务器。
- private:只能被终端用户的浏览器缓存,不允许 CDN 等中继缓存服务器对其缓存。
优先级 Cache-Control > Expires