HTTP缓存

HTTP缓存分为强缓存和协商缓存

强缓存:在客户端发起请求之前,先检查强缓存,查看强缓存的cache-control里的max-age,判断数据有没有过期,如果没有则直接使用该缓存。

注意:有些用户可能会在没有过期的时候点了刷新按钮,这个时候浏览器就会去请求服务端,要想避免这样做,可以在cache-control里面加一个immutable属性,这样用户再怎么刷新,只要max-age没有过期就不会去请求资源。

协商缓存:浏览器在加载资源时,如果没有命中强缓存,这时就会去请求服务器,再进行请求的时候,会携带两个参数,一个是Etag属性,另一个是Last-modified,带着这两个参数去检验缓存是否真的过期,如果没有过期,则会返回304状态码,表示缓存没有过期,可以使用旧缓存,如果已经过期,则会返回200状态码和数据。

  • Etag的作用:有时候编辑了文件,但是没有修改,但是Last-modified属性的时间就会改变,导致服务器会重新发送资源,但是Etag的出现就完美避免了这个问题,因为他是文件的唯一标识符

  • Last-modified和Etag各自的优缺点:

    每个文件都有一个Etag和Last-modified属性,Erag要优先于Last-modified,两个属性各有优缺点,比如Last-modified很多时候不能感知文件是否发生变化,但是Etag可以;Last-modified仅仅记录了时间点,性能肯定要高于Etag,Etag记录的是哈希值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值