浏览器的强缓存和协商缓存

强制缓存就是向浏览器缓存查找该请求结果,并根据该结果的缓存规则来决定是否使用改缓存结果的过程;

其缓存规则就是服务器会将规则放入响应报文的http头中,通过expires和cache-control字段控制,后者优先级比前者高;前者的原理是对比客户端和服务端之间的时间,但是会有时区问题所以一般采用后者;后者又有几种状态

(1)public:所有内容都将被缓存(客户端和代理服务器都可缓存)

(2)private:所有内容只有客户端可以缓存,Cache-Control的默认取值

(3)no-cache:客户端缓存内容,但是是否使用缓存则需要经过协商缓存来验证决定

(4)no-store:所有内容都不会被缓存,即不使用强制缓存,也不使用协商缓存

(5)max-age=xxx (xxx is numeric):缓存内容将在xxx秒后失效

根据状态码后面的字段来的:from memory cache代表使用内存中的缓存;from disk cache则代表使用的是硬盘中的缓存;

.

协商缓存就是强制缓存失效后,浏览器携带缓存表示向服务器发起请求,由服务器根据缓存表示决定是否使用缓存的过程;也分2种状态

(1)协商缓存生效,返回304

(2)协商缓存失败,返回200和请求结果

缓存字段是由Last-Modified / If-Modified-Since 和 Etag / If-None-Match 控制

前者是

(1)Last-Modified是服务器响应请求时,返回该资源文件在服务器最后被修改的时间,如下:

(2)If-Modified-Since则是客户端再次发起该请求时,携带上次请求返回的Last-Modified值,通过此字段值告诉服务器该资源上次请求返回的最后被修改时间。服务器收到该请求,发现请求头含有If-Modified-Since字段,则会根据If-Modified-Since的字段值与该资源在服务器的最后被修改时间做对比,若服务器的资源最后被修改时间大于If-Modified-Since的字段值,则重新返回资源,状态码为200;否则则返回304,代表资源无更新,可继续使用缓存文件

后者是

(1)Etag是服务器响应请求时,返回当前资源文件的一个唯一标识(由服务器生成)

(2)If-None-Match是客户端再次发起该请求时,携带上次请求返回的唯一标识Etag值,通过此字段值告诉服务器该资源上次请求返回的唯一标识值。服务器收到该请求后,发现该请求头中含有If-None-Match,则会根据If-None-Match的字段值与该资源在服务器的Etag值做对比,一致则返回304,代表资源无更新,继续使用缓存文件;不一致则重新返回资源文件,状态码为200;

缓存存放的地方在 内存或硬盘中

内存缓存有2个特点:快速读取和时效性

硬盘缓存存在硬盘中会比较慢;

一般js图片等文件解析后直接存入内存中;而css文件则是存在硬盘文件中;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值