浏览器缓存

  1. 缓存可以用在服务端redis或客户端memcached

浏览器:用户电脑上面的内存或者磁盘上面的disk和memory

  • 什么是缓存?

当浏览器需要资源的时候,首先会访问外部的缓存就是浏览器的缓存,如果浏览器没有缓存,那么就会请求服务器端,服务器端进行响应,浏览器端同时会把资源储存起来,当网页再次需要这个资源的时候,同样访问外部缓存,这个时候已经存在这和资源,就会将这个资源直接返回。

  1. 好处:提升请求响应速度,降低服务器带宽占用,降低服务端资源占用
  2. 缓存要了解的概念
  • 浏览器:资源的请求方
  • 源服务器:内容真正来源的服务器
  • 新鲜度:缓存时长限制
  • 校验值:缓存内容的对比如果相同更新新鲜度不更新内容
  • 缓存失效:缓存失效后的更新删除之前的将新的缓存存到缓存中

浏览器和服务器之间主要的通讯方式就是http协议,所以内容的缓存策略都是在http表头中,每当接触到浏览器发送的请求时,服务器都会在响应报文中设置一段标头

  1. 常见新鲜度标头:expires pragma http1.1引入cache.-control
  • expires :RFC2822格式时间字符串 不可以超过一年
  • pragma
    no-cache设置之后不会被缓存
  • cache-.control是一个多指标头(常用)
  • private内容对用户私有的,只能在浏览器端缓存
  • public可以再任何地方缓存
  • no-store不可以被缓存
  • no-cache内容可以被缓存,但是每次需要请求服务器进行内容校验
  • max-age使用缓存的过期事件单位秒和s-max-age同时存在会使用max-age
  • s-max-age共享缓存的过期时间,代理服务器会使用
  • must-revalidate服务器无法访问浏览器会使用缓存的内容,哪怕这个内容有效期超过了cache–control的max-age的时间,必须让请求服务器
  • proxy–revalidate同上,用于代理服务器
  1. 常见校验值标头:ETagif-none-match last-modify if-modified-since
  • Etag实体标签两种类型强和弱
    这个标签的内容是资源的唯一标识符, 当一个资源的新鲜度过期后, 再次请求服务器会附带if-none-match这个标头, 他的值就是上一次请求返回的标头的E-tag, 服务器接收到当前这次请求之后,会使用最新的内容和if-none-match的值进行对比如果不相同返回新的ETag和新的资源,如果相同就返回304状态码, 表示没有发生任何变化

强Etag表示两次内容完全相同
弱Etag会有一个W-前缀, 表示两次内容虽然不完全相同, 但是可以认为是相同的

  • .last-modify
    最后一次修改内容的时间和日期, 当内容成就时, 浏览器会在情景中使用最后一次的last-modify作为if-modified-since的值, 服务器会根据内容的最后的修改时间和这个词做一个对比,如果这个结果不一致会返回新的内容和新的last-modify, 一致返回304状态码
  • 如果同事存在last-modify和Etag请求头表示会附带if-none-match和if-modified-since,服务器会同时校验这两个标头
强缓存和协商缓存

1.强缓存指的是新鲜度,expires pragma cache-control
2.协商缓存:指校验值Etag和last-modify
f5刷新会暂时禁用强缓存,协商缓存正常生效
ctrl+f5刷新会暂时禁用所有的缓存策略, 请求一定会到达服务器
3.通用做法
html设置协商缓存
其他资源设置强缓存 (1年有效期)每次构建使用文件指纹生成新文件
接口根据业务需求自行设置, 商品类接口一般不会使用缓存, 咨询类的数据可以使用强缓存和协商缓存

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值