浏览器缓存小结

浏览器缓存是前端优化的一个重要手段,缓存可以带来很多好处:

  • 减少冗余数据传输,节省带宽
  • 减轻服务器的请求负担,有缓存就可以减少向服务器发送请求
  • 资源从缓存中读取,无需向服务器发送请求再等待返回,加快了客户端的访问速度

但缓存带了了一个问题,就是如果文件更新了,但用户访问时浏览器读取的是缓存资源,则用户就获取不到最新的页面,影响用户使用。这种情况如何解决呢?

浏览器缓存主要是指http缓存,其机制是根据http报文的缓存标识进行相应的操作。

状态码含义
200 from memory cache状态码灰色,从内存中读取资源,不请求服务器,页面关闭时,资源会被内存释放(一般脚本、字体、图片会存在内存中)
200 from disk cache状态码灰色,从磁盘中读取资源,不请求服务器,页面关闭不会释放资源,只有当用户手动清除浏览器缓存时方可释放(一般非脚本会存放在内存中,如css等)
200从服务器下载最新资源 , size 为从服务器获取的全部资源大小
304访问服务器,发现资源未更新,使用本地资源,size为服务器通信报文大小

浏览器有三级缓存原理:

  1. 先查找内存,如果内存中存在,则从内存中进行加载
  2. 如果内存中无,查硬盘,硬盘中有则从硬盘中加载资源
  3. 内存无,硬盘无,则进行网络请求,加载到的资源缓存到硬盘或者内存中

浏览器缓存分为强制缓存和协商缓存

强制缓存

用户第一次访问时,浏览器将数据存在缓存中,在过期时间内,都不会再请求服务器。
是否使用强缓存在于资源是否过期,过期时间从第一次请求服务器响应头总获取。  

控制强制缓存的字段为Expires 和 cache-control,其中cache-control优先级比Expires搞

协商缓存

协商缓存即浏览器和服务器协商。
第一次请求服务器时,服务器返回资源,且带有一个资源的标识符,浏览器将资源及资源标识符存到缓存中。

当第二次请求资源时,浏览器会首先将缓存标识发送给服务器,服务器拿到标识后,判断资源是否更新;
如果更新则将新数据和新的标识符一同返回;
如未更新则返回304状态码,浏览器读取本地缓存服务器中的数据

协商缓存字段:Last-Modified/IF-Modified-Since、Etag/IF-None-Match

Last-modified和Etag可以一起使用,服务器会优先验证Etag,一致的情况下,才会继续对比Last-modified,最终才决定是否返回304

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值