HTTP强缓存和协商缓存

强缓存和协商缓存都是属于浏览器缓存

浏览器缓存

浏览器缓存是浏览器在本地磁盘对用户最近请求过的文档进行存储,当访问者再次访问同一页面时,浏览器就可以直接从本地磁盘加载文档。
浏览器缓存的有什么优点:
1.减少冗余的数据传递
2.减少服务器负担
3.加快客户端加载页面的速度

Web性能优化的重要方式,浏览器缓存的过程究竟是怎么样?
浏览器第一次发起请求时,本地无缓存,向web服务器发送请求,服务端响应的请求,浏览器端缓存。

过程

浏览器第一次请求发生后,再次发送请求时:

  • 浏览器请求某一资源时,会先获取该资源缓存的header信息,然后跟据header中的Cache-Control和Expires来判断是否过期。如果没有过期就之恶极从缓存中获取资源信息,包括缓存的header的信息,所以这次缓存不会与服务器进行通信。这里判断是否过期,就是和强缓存相关。
  • 如果显示已经过期,浏览器会像服务端发送请求,这个请求会携带第一次请求返回的有关缓存的header字段信息,比如客户端会通过If-None-Match头将先前服务器发送过来的Etag发送给服务器,服务会对比这个客户端发送过来的Etag是否和服务器的相同,如果相同就将If-None-Match的值设为false,返回状态码304,客户端继续用本地缓存,不解析服务器端发回来的数据,如果不相同就将If-None-Match的值设置为true,返回状态码为200,客户端重新执行服务器返回的数据;客户端还会通过If-None-Match头将之前服务器端返回的数据最后修改的时间发送给服务器,服务器通过时间戳判断客户端的页面是否时最新的,如果不是就发怒hi最新的内容,如果是新的,就返回304,客户继续使用本地缓存。

强缓存

强缓存利用http头中的Cache-Control和Expires两个字段来控制,用来表示资源的缓存时间。强缓存中普通刷新会忽略它,单不会清除它,需要强制刷新。浏览器强制刷新,请求会带上Cache-Control:no-cache和Pragma:no-cache

Exipires

这个是http1.0的规范,存放的就是标准格式的时间

Cache-Control

在http1.1中出现,主要利用该字段的max-age的值来进行判断,它是一个相对时间的指标

协商缓存

协商缓存就是由服务器来确定缓存资源是否可用,所以客户端和服务器端要通过某种标识来进行通信,从而让服务器判断请求资源是否可以缓存访问。
普通刷新会启用弱缓存,忽略强缓存。只有在地址栏或者收藏夹输入网址,通过链接引用资源等情况下,浏览器才会启用强缓存,有时候更新一张图片,一个js文件,页面内容依旧是旧的,但是直接访问图片或者文件,看到的内容却是新的。

主要涉及到两组header:Etag和If-None-Match
这两个字段返回的试一个状态码,ETag保证每一个资源是唯一的,服务器跟据浏览器上送的If-None-Match来判断是否命中缓存。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值