HTTP缓存(1)

前端http缓存(主)

http缓存的好处

浏览器访问一个页面时是通过http请求访问服务器资源,服务器返回资源给浏览器,但是页面中的一些资源比如(图片)可以存储在本地缓存中,当浏览器下一次去访问的时候先在本地缓存中查询,查询不到后再去请求服务器。这样可以大大减少服务器的负担以及页面流畅度。

强缓存

强缓存是指不需要请求服务器,直接使用本地缓存中的资源,它靠响应头部的Expires和Cache-control字段值。
  1. Expires(绝对时间)
    见下图
    在这里插入图片描述
    浏览器第一次访问某个页面资源时,会在http响应头部中返回Expires这个头,浏览器再次访问时,会在本地缓存中找到这个资源,然后比较它的Expires和当前请求时间大小,如果当前请求时间在Expires之前,则命中缓存;(不是很懂为甚么在之前就命中缓存)如果没有命中缓存,浏览器向服务端请求资源时,会更新Expires头部大小。
  2. Cache-control(相对时间)
    在这里插入图片描述
    绝对时间可能会引起当修改了客户端时间之后,可能会引起命中缓存的结果,所以有了相对时间;这个响应头表示当浏览器第二次访问这个资源时,在接下来的这个时间内都可以使用本地缓存,超出了这个时间后,则不能命中缓存;

协商缓存

协商缓存是指浏览器不知道要不要使用本地缓存资源,所以去请求服务器;当强缓存没有被命中时,协商缓存就出现了;分成两对响应头。
  1. Last-modified & if-modified-since
    浏览器第一次访问某一个页面资源时会有Last-modified这个头部,表示资源最后一次更新的时间,第二次访问时会加上 if-modified-since头部,这是上一次访问响应头部中的last-modified的值,与这次的last-modified作比较,如果一样,则表示资源没有更新,那么服务端返回304,但不用返回资源。
  2. Etag & if-none-match
    上面那种有可能出现的问题是资源更新了,但是最后修改时间没有更新;所以又加了Etag & if-none-match这一对头部,Etag是指第一次访问资源时针对该资源生成的唯一标识符,资源变化后,Etag也会变, if-none-match是上一次访问响应头部中Etag的值,所以第二次访问比较这两个头部是否一样,不一样,资源改变了,服务器就得重新返回资源。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值