• 0
  • 0
分享
  • 前端性能优化:浏览器的2种缓存方式要弄清——软件测试圈
  • 曼倩诙谐 2023-04-06 13:29:43 字数 1198 阅读 993 收藏 0

  在前端性能优化中,最重要的就是缓存,使用缓存可以极大的提升浏览器的响应速率。

  什么是缓存呢?

  当我们第一次访问某个网站时,浏览器会把网站中的图片等资源存储在电脑中,以备后续使用,第二次访问该网站时,浏览器直接访问缓存中的数据,从而达到提高浏览器的响应效率,优化用户的体验。

  缓存的优点

  1.提高浏览器的响应速率;

  2.减少服务器的访问压力;

  3.减少对网络的压力。

  除了浏览器缓存之外,还存在CDN缓存、代理服务器缓存等等;这里主要描述浏览器缓存,浏览器缓存也指的是HTTP缓存,当我们使用浏览器用http协议与服务器交互时,浏览器会使用一种与服务器约定的规则进行缓存操作。

  缓存的类型

  浏览器的缓存位置一般分为强缓存和协商缓存。

  他们之前的区别是强缓存不需要向浏览器发送请求,直接从缓存中读取资源,协商缓存需要询问浏览器缓存是否过期以确定从哪里读取资源。

  强缓存通过设置http header来实现:Expires 和 Cache-Control。

  Expires用来指定资源到期的具体时间,是服务器的具体时间点。该属性是HTTP/1中使用的属性,受限于本地时间,如果本地时间修改,可能会造成缓存失效。

  Cache-Control也用来指定资源的到期时间,他的时间是一个时间范围。比如:Cache-Control:max-age=300,单位是秒,代表该资源的有效时间是5分钟。该属性是HTTP1.1中的属性,如果Expires和Cache-Control都设置,则Cache-Control的优先级高于Expires。

  协商缓存是在强缓存失效之后,浏览器携带缓存标识向服务器发起请求,由服务器决定是否使用缓存。协商缓存可以通过两种HTTP Header来实现:Last-Modified和ETag。

  Last-Modified

  浏览器第一次访问资源时,服务器会在response头中添加时间节点,这个事件点是服务器最后一次修改文件的时间点,浏览器第二次访问该资源时,检测到缓存文件中有last-Modified,就会在第二次请求头中添加if-Modified-Since,值为上次Last-Modified的值,服务器拿到该值后,会与该资源在服务器端的最后修改时间做对比,如果相同,则说明命中缓存,返回304,如果不相同,则会返回200,并返回新资源。

  ETag

  和Last-Modified相同,Last-Modified会返回最后修改的时间点,而Etag会返回一个新的token,第二次请求时,token会在If-None-Match中返回给服务器,服务器会比较token是否一致。

  总结

  浏览器缓存的强缓存和协商缓存如下图:

1.jpg



作者:张欢    

来源:http://www.51testing.com/html/79/n-7795279.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • UI自动化是自动化测试中不可分割的一部分,是黑盒测试的一种重要手段。在UI自动化测试过程中,我们不可避免会遇到各种各样的问题,现将自己在测试过程中遇到的问题进行汇总,希望可以为大家提供帮助。1、启动浏览器报错报错信息:Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: call function result missing 'value'...
            0 2 2031
            分享
          •   2022年度软件测试行业的趋势预测:如果你也想了解更多发展趋势,那就点击下方链接填写调查问卷吧!链接:http://vote.51testing.com/  最近几年软件测试行业在如火如荼的发展壮大,互联网以及其他传统公司都需要大批量的软件测试人员,但是20年的疫情导致大规模裁员,让人觉得行业寒冬已来,软件测试人员的职业规划值得我们深度思考。  大家都比较看好软件测试行业,只是因为表面上看起来:钱多事少加班少。其实这个都是针对个人运气好的童鞋才会有此待遇。在不同的阶段做好不同阶段的事情,才有可能离这个目标更近,作为一枚软件测试人员,也许下面才是我们最真实的写照。  第一年  当年也是一头撞...
            0 1 722
            分享
          • 使用风险分析,确定测试的重点由于很少有机会对一个应用软件进行所有可能的测试 (包括所有可能的事件组合、所有的相关性、或者一切可能出错的东西),对大多数软件开发项目来说,利用风险分析是适当的。这需要判断技能、常识、感觉和经验。如果有正当理由,也可采用正式的方法。需要考虑下列因素:对于该项目的用途而言,哪种功能最重要?哪种功能对用户最明显?哪种功能对安全影响最大?哪种功能对用户最有用?对客户来说,该应用软件的哪个部分最重要?在开发过程中,该应用软件的哪个部分可以最先测试?哪一部分代码最复杂,容易导致出现错误?哪一部分的应用程序是在急迫或在惊恐的情况下开发出来的?哪一部分程序与过去项目中引起问题的部...
            0 0 912
            分享
          • 前言:近年移动互联网好比IT界的一条浩瀚银河,安卓手机测试可谓其中最璀璨的一颗明珠,这里有一座你不得不熟悉的桥--ADB曾见过不少相关的文章或培训,不乏空谈多,实战少;期望大,效果差。也见过很多测试同仁,预成大牛,却不得其法。今日我们秉承单点极致的精神。聚焦实用的技能,也思考下测试这条路,该如何走的深远。安卓测试,乃如今移动测试领域中举足轻重的部分,相信也有不少同仁奋战在这片战场。工作中听闻最多的几个关键词"性能","自动化","稳定性"……掌握这些测试技能,或可成为高级测试工程师。也达到很多同仁眼中的成功,至少是成就感。那么这条路远...
            0 0 870
            分享
          • 对于一个优秀的Java技术人员来说,成为Java架构师是一个很好的职业发展方向,相比于普通的Java技术人员,Java架构师要求更高,不仅有丰富的编码经验,而且还要熟悉硬件性能优化、内核调试、网络故障排查、系统安全、分布式系统设,还有了解国内外技术的新趋势和特点,最重要的是,还要善于与人沟通,敢于排除不同意见,敢于承担责任,了解团队内工程师的特点,善于将他们组成一个整体。对于想要成为Java架构师的人员来说,可以着重培养以下几个方面的能力:1、知识广度了解国内外技术的新趋势和特点,以及使用该技术能够解决什么问题,同一种业务使用不同的技术存在什么样的优缺点,相比较而言,哪一种能符合公司要求。2、...
            0 0 792
            分享
      • 51testing软件测试圈微信