现代浏览器的强缓存、协商缓存,学会学通
🐶 初始阶段、获取缓存:
在浏览器发出请求后,服务器的响应头里包括了当前资源的过期时间,浏览器拿到这些数据存入缓存文件夹
缓存存在哪里?
大家可以按照路径打开: C:\Users\这里是你的用户名\AppData\Local\Google\Chrome\User Data\Default\Cache
里面这些没有后缀的文件就是二进制缓存文件了,不是我认为的直接放图片文件视频文件:
缓存文件都存了什么?
这个直接打是打不开的,网上可以找到软件 ChromeCacheView 查看:这里包括了伴随该文件的所有缓存规定。
🐱 第一阶段、强缓存验证:
1、 验证位置:本地(内存或者硬盘,根据浏览器策略决定),
2、 验证字段:就两个,expires (http1.0中出现)
和cache-control (http1.1中出现)
,如果这两个字段同时出现,cache-control
会覆盖expires
3、验证流程: 查看两个字段的指定时间,如果过期则跳到下一阶段(协商缓存)
4、如果命中: 状态码:200 (from disk cache)或是200 OK (from memory cache) 注释:根据该缓存的内存占用进行存储,内存占用过高则存入磁盘
cache-control
常用的参数:
private:客户端可以缓存
public:客户端和代理服务器均可缓存; max-age=xxx:缓存的资源将在 xxx 秒后过期,常见:2592000(三十天)、31536000(一年);
no-cache:跳过当前强验证步骤,使用下一阶段协商缓存来验证是否过期; must-revalidate:如果强缓存时间过期,必须去服务器进行有效性检验这个旧的缓存
no-transform:多用于图片,不允许对资源进行转换压缩
🦁 第二阶段、协商缓存验证:
1、验证位置:服务器;
2、验证字段:有两组,Last-Modified If-Modified-Since
和ETag If-None-Match
3、验证流程:
①Last-Modified If-Modified-Since
:
上次请求时,缓存文件中的Last-Modified
记录该资源的修改日期,本次请求时,Last-Modified
会通过请求头If-Modified-Since
传递给服务器,服务器端的最新修改日期和该缓存文件的最新修改日期比较;
② ETag
If-None-Match
:ETag
是服务器端认为设置的一串唯一字符串(一般是哈希或者版本号),本次请求时,If-None-Match
传入缓存文件的ETag
值,去和服务器里的该资源的ETag
比较,以达到缓存验证的目的;
4、验证结果:
①Last-Modified If-Modified-Since
:
如果If-Modified-Since
值 就是 服务器端该文件的最新修改日期,说明缓存是新鲜的,服务器返回304,浏览器使用本地缓存;
如果If-Modified-Since
值 早于 服务器端该文件的最新修改日期,说明缓存不新鲜,服务器返回新的该资源,并且更新该资源Last-Modified
日期
② ETag
If-None-Match
:
如果If-None-Match
传递给后台的缓存ETag
值和后台对应该文件的ETag
值一样,说明该缓存新鲜,服务器返回 304 状态码,浏览器使用本地缓存;
如果If-None-Match
传递给后台的缓存ETag
值和后台对应该文件的ETag
值不一样,说明该缓存不新鲜,服务器返回更新的资源和新的 Etag
值;
附录:
触发强制缓存验证:
1、用户点击刷新按钮时会开始缓存验证。 2、如果缓存的响应头信息里含有"Cache-control: must-revalidate”的定义,在浏览的过程中也会触发缓存验证。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanegac
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01