Day 75/100 关于浏览器缓存的几个名词

写在前面的话

浏览器缓存是常考题,总忘;

其实,都是借口,就是没走心;

 

1、浏览器缓存分为强缓存和协商缓存

按浏览器读取优先级顺序依次为:Memory Cache、Service Worker Cache、HTTP Cache、Push Cache

1)强缓存

直接从本地副本比对读取,不去请求服务器,返回的状态码是 200;

强缓存主要包括 expires 和 cache-control

HTTP1.0中定义expires为资源的过期时间;

HTTP1.1中定义了cache-control 表示相对时间(解决了expires中服务器时间和本地时间可能不一致的问题);(优先级高于expires)

2)协商缓存

会去服务器比对,若没改变才直接读取本地缓存,返回的状态码是 304

last-modified 记录资源最后修改的时间(记录的是编辑时间,无论是否修改;只能记录到秒)

etag 会基于资源的内容编码生成一串唯一的标识字符串,只要内容不同,就会生成不同的 etag。(优先级更高)

2、缓存命中率

从缓存中得到数据的请求数与所有请求数的比率。理想状态是越高越好。

3、过期内容

超过设置的有效时间,被标记为“陈旧”的内容。通常过期内容不能用于回复客户端的请求,必须重新向源服务器请求新的内容或者验证缓存的内容是否仍然准备。

4、验证

验证缓存中的过期内容是否仍然有效,验证通过的话刷新过期时间。

5、失效

失效就是把内容从缓存中移除。当内容发生改变时就必须移除失效的内容。

6、按刷新按钮、F5 刷新、网页右键“重新加载”

这种情况下,实际是浏览器将 cache-control 的 max-age 直接设置成了 0,让缓存立即过期,直接走协商缓存路线。发送的请求头如下:

cache-control: max-age=0

if-modified-since: Tue, 20 Nov 2018 00:41:14 GMT

7、ctrl + F5 强制刷新

强制刷新的情况下,浏览器会强行设置 no-cache,强制获取最新的资源,就连 if-modified-since 等其他缓存协议字段都会被吃掉。此时发送的请求头如下:

cache-control: no-cache

pragma: no-cache

 

参考链接

https://www.cnblogs.com/ranyonsue/p/8918908.html

https://www.jianshu.com/p/fb59c770160c


以上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值