浏览器缓存

浏览器缓存的作用: 极大的改善网站性能,提高用户体验

浏览器缓存的定义:  浏览器在本地磁盘对用户最近请求过的文档进行存储,当访问者再次浏览该页面时,浏览器可以直接从本地磁盘中加载文档。

浏览器缓存的类型:1  强缓存; 2  协商缓存。浏览器采用哪种缓存类型由响应的header内容来决定

强缓存需要关注的参数:

Expires:判断缓存是否失效

Cache-Control:

-no-cache:不使用本地缓存,需要使用协商缓存,先与服务器确认返回的响应是否被更改,如果之前的响应中存在Etag,那么请求的时候会与服务器端验证,如果资源未被修改,则可以避免重新下载

-no-store:直接禁止浏览器缓存数据,每次用户请求该资源,都会向服务器发送一个请求,每次都会下载完整的资源

-public:可以被所有用户缓存,包括终端用户和CDN等中间代理服务器

-private:只能被终端服务器缓存,不允许CDN等中继缓存服务器对其缓存

PS:如果Expires和Cache-Control同时存在,cache-control的优先级高于expires

两者的异同点:共同点是都是从客户端缓存中读取资源

                        不同点是强缓存不会发送请求,协商缓存会发送请求

协商缓存,正如其名:通过服务器来告知缓存是否可用,所以客户端和服务端是需要通过某种标识来进行通信,从而让服务器判断请求资源是否可以缓存访问

协商缓存需要关注的参数:Etag/If-None-Match、Last-Modified/If-Modified-Since

第一组是对内容采用某种算法生成的hash值,后者是时间,精确到秒。

1   在精确度上Etag要优于Last-Modified。对于1s改变很多次的就无法判断了

2   在性能上Etag要逊于Last-Modified。毕竟计算hash是需要时间的

3   在优先级上Etag要高于Last-Modified,服务器优先校验Etag

浏览器后续进行请求时:

浏览器发送请求,在有缓存的情况下,

首先判断缓存是否过期,如果没有过期,从缓存中读取;

如果过期,判断Etag是否存在,如果存在,向web服务器发送带有If-None-Match的请求,如果Etag和服务器端新生成的Etag一致,则响应码为304,此时,响应的header会更新,但是内容不会更新,从缓存中读取;如果不一致,则更新内容;

如果Etag不存在,判断Last-Modified,在指定时间之内,向web服务器发送带有If-Modified-Since的请求,如果未被修改,响应码为304则从缓存中读取,否则响应码200,更新内容




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值