浅析http缓存

一、作用

能够帮助服务器提高并发性能,很多资源不需要重复请求直接从浏览器拿

二、作用范围

至少两次http请求才有作用:第一次响应到第二次请求的时候

三、分类

  • web缓存:数据库缓存、服务器缓存、浏览器缓存
  • 浏览器缓存:http缓存、indexDB、cookie、localstorage

三、基本术语

在这里插入图片描述

四、http缓存分类

通过资源的http请求头信息来判断是什么类型的缓存

1、强缓存

不用发送请求到服务器,直接拿缓存,状态status是200

(1)判断:

在chorm的检查中,network中在size一栏可以看到"from memory cache"或者"from disk cache"
在这里插入图片描述

(2)来源:

利用http的Expires或者Cache-Control两个字段

  • expires(绝对有效时间)

    Expires=max-age+请求时间,需要和Last-modified结合使用

    缺点:设置的时间是服务器的时间,当客户端本地的时间被修改之后,服务器与客户端时间有偏差,导致时间混乱
    在这里插入图片描述

  • Cache-control(相对有效时间)优先级高

    在这里插入图片描述

(3)状态(size字段):
a、from memory cache (浏览器内存读取,关闭浏览器不会存在)
b、from disk cache (硬盘读取,关闭浏览器还存在)

一般动态资源(js、图片)等会存在浏览器缓存中,静态资源(css)等会存在硬盘中


2、协商缓存

若未命中强缓存,浏览器会去询问服务器是否需要从缓存获取数据,然后服务器来判断浏览器本地的缓存是否失效,状态status是304

(1)来源:

服务器根据http信息头的last-modified/if-modify-since或Etag/if-none-match来判断是否命中协商缓存

  • a、last-modified(第一次请求,服务器发送过来的)/if-modify-since(第二次请求,浏览器发送的)
  • b、Etag/if-none-match (返回的是校验码,保证每个资源是唯一,资源变化时,Etag就会更改)
    为什么要有Etag?
    1. last-modified只能精确到秒,要是在毫秒内修改,则不能检测到
    2. 有些文件定期生成,内容没有改变,此时last-modified已经变了,缓存不能使用
    3. 时间的精确问题,服务器和代理器可能存在时间不一致
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值