最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 客户端缓存

    正文概述 掘金(moonlightop)   2021-05-31   490

    浏览器缓存

    • memory cache是浏览器为了加快读取缓存的速度而作的优化

    客户端缓存


    HTTP缓存控制

    条件请求

    • 没有 If 开头的 条件请求 头字段时
    1. 用HEAD请求获取该资源的Last-modified 或 ETag
    2. 获取到的Last-modified 或 ETag与缓存的资源对比
    3. 若资源发生了变化,那么就发送一次GET请求获取新的资源
       否则直接用缓存
    
    • HTTP定义了一系列的 If 开头的 条件请求 头字段,交由服务端来检验缓存是否过期
           客户端			      服务端
    if-Modified-Since		Last-modified	        (弱检验器)	
    if-None-Match			ETag			(强检验器)
    
    • ETag 全称 Entity Tag,资源的唯一标识符,用于解决Last-modified(单位秒)无法准确区分文件变化的问题

      • 强ETag要求资源在字节级别相同
      • 弱ETag要求资源在语义上相同即可(值前面有个 W/ 标记)
    • 图片来源

    客户端缓存


    两端缓存控制

    • 以前用Expires,缺点就是客户端这边可以修改本地时间,那就乱了呀,而现在Cache-Control: max-age=x,用相对响应报文创建的时间(Date头字段)

    客户端缓存


    • 响应报文的头字段没有对缓存进行说明时,浏览器会采用一套 启发式算法来尽量缓存一段时间

      • 响应报文提供了Last-modified,但没有提供Cache-Control 或 Expires

      • 如果响应报文连Last-modified都没有呢,这个得看具体客户端是采用什么算法去缓存了

    • 响应报文的头字段 Cache-Control: max-age=0时,浏览器会不会缓存该资源呢 ?

      • 会,浏览器收到数据就会将其缓存起来,而内部有一套算法去清除,而max-age是浏览器清除缓存的参照物
    • 返回304和200的区别在于304不会携带实体数据,只是告诉浏览器Not Modified,让它去用缓存


    应用

    模式1: 不常变化的资源

    • 设置很长时间的强制缓存(时效性不强)
    Cache-Control: max-age=31536000
    

    模式2: 经常变化的资源

    • 设置使用前需要验证的强制缓存(时效性很强)
    Cache-Control: no-cache
    ETag: xxx
    Last-modified: xxxx
    

    模式1和2结合

    • 时效性不算太强,也不算太弱,来取个中
    no-cache <=> max-age=0,must-revalidate
    # 取中间
    Cache-Control: max-age=600,must-revalidate
    
    • 很容易导致不同版本的资源组合在一起,导致报错
    假设有三种资源:  index.html  index.js  index.css 存入浏览器缓存
    	1. index.html的缓存有效时间先到期,被浏览器清除,而index.js index.css的缓存仍存在。
    	2. 而此时浏览器请求到的新版本的index.html和旧版本的index.js和index.css组合很容易会报错
    

    困惑

    • 浏览器什么情况下会存储到memory cache ?

    参考

    • calendar.perfplanet.com/2016/a-tale…
    • 极客时间:透析HTTP协议
    • zhuanlan.zhihu.com/p/44789005
    • jakearchibald.com/2016/cachin…

    起源地下载网 » 客户端缓存

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元