前端浏览器缓存机制 -尊龙游戏旗舰厅官网
目录
- 1 缓存定义及其优点
- 2 强缓存
- 2.1 expires 和 cache-control
- 3 协商缓存
- 4 浏览器缓存位置
强缓存是当我们访问url的时候,不会向服务器发送请求,直接从缓存中读取资源,但是会返回200的状态码。
如何设置强缓存?
我们第一次进入页面,请求服务器,服务器会进行应答,浏览器根据服务器的应答respon header来判断是否对资源进行缓存,如果响应头中有expires、pragma或cache-control字段,代表是强缓存,浏览器就会把资源缓存在memory cache 或 disk cache中。
第二次请求时,浏览器判断请求参数,如果符合强缓存条件就直接返回状态码200,从本地缓存中拿数据。否则把响应参数存在request header请求中,看是否符合协商缓存,符合则返回状态码304,不符合则服务器返回全新资源。
2.1 expires 和 cache-control
expires:设置浏览器缓存时间,时间是绝对时间,从设置的值上可以看出是个日期,浏览器收到response时看看有没有expires字段有的话缓存头信息和资源,再次请求时查看缓存时间过没过,没过在缓存拿出来,过了重新请求。
cache-control都可以设置哪些属性
服务端如何判断缓存已失效?
http1.1推荐使用的验证方式是if-none-match/etag,在http1.0中则使用if-modified-since/last-modified。
触发条件:
cache-control 的值为 no-cache (不强缓存) 或者 max-age 过期了 (强缓存,但总有过期的时候)当浏览器判断不是强缓存,就会向服务器发请求,判断是否是协商缓存。如果是,服务器会返回304 not modified,浏览器从缓存中加载。
last-modified和if-modified-since字段:
1、浏览器第一次向服务器发请求,服务器返回资源并在response header加上last-modified字段,表示资源最后修改的时间。
2、浏览器再次请求这个资源时,请求头会加上if-modified-since字段。若这两个字段一样,说明资源没有修改过,返回304not modified,浏览器从缓存中获取资源。若这两个字段不一样,说明资源修改过,服务器正常返回资源。
etag、if-none-match:
但有时候服务器上资源有变化,单最后修改时间没更新,则引出下面两个字段。
1、浏览器第一次向服务器请求,服务器返回资源并在response header上加etag字段。表示资源本身,资源有变化,则该字段有变化。
2、浏览器再次向服务器请求这个资源时,请求头携带if-none-match字段。若这两个字段相同,则代表资源没有变化,服务器返回304not modified,浏览器从缓存中加载。若两个字段不同,证明资源有变动,服务器正常返回资源。
查找浏览器缓存时会按顺序查找: service worker–>memory cache–>disk cache–>push cache。
1 service worker在所有浏览器缓存中,disk cache 覆盖面基本是最大的。它会根据 http herder 中的字段判断哪些资源需要缓存,哪些资源可以不请求直接使用,哪些资源已经过期需要重新请求。并且即使在跨站点的情况下,相同地址的资源一旦被硬盘缓存下来,就不会再次去请求数据。绝大部分的缓存都来自 disk cache。
cpu、内存、硬盘都是计算机的主要组成部分。
cpu:中央处理单元(cntralpocessinguit)的缩写,也叫处理器,是计算机的运算核心和控制核心。电脑靠cpu来运算、控制。让电脑的各个部件顺利工作,起到协调和控制作用。
硬盘:存储资料和软件等数据的设备,有容量大,断电数据不丢失的特点。
内存:负责硬盘等硬件上的数据与cpu之间数据交换处理。特点是体积小,速度快,有电可存,无电清空,即电脑在开机状态时内存中可存储数据,关机后将自动清空其中的所有数据。
参考链接
总结
- 上一篇:
- 下一篇: