web 性能优化详解(Lighthouse工具、优化方式、强缓存和协商缓存、代码优化、算法优化)

这篇具有很好参考价值的文章主要介绍了web 性能优化详解(Lighthouse工具、优化方式、强缓存和协商缓存、代码优化、算法优化)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.性能优化包含的方面

优化性能概念宽泛,可以从信号、系统、计算机原理、操作系统、网络通信、DNS解析、负载均衡、页面渲染。只要结合一个实际例子讲述清楚即可。

2.什么是性能?

Web 性能是客观的衡量标准,是用户对加载时间和运行时的直观体验。

Web 性能指页面加载到可交互和可响应所消耗的时间,以及页面在交互时的流畅度——滚动是否顺滑?按钮能否点击?弹窗能否快速打开,动画是否平滑?

Web 性能既包括客观的度量如加载时间,每秒帧数和到页面可交互的时间;

也包括用户的对页面内容加载时间的主观感觉。 

3.如何进行Web性能优化?

1. 首先需要了解性能指标 - 多块才算快?---》如从请求到页面渲染完毕从多少时间减少到了多少时间

2. 使用专业的工具可量化的评估出网站或应用的性能表现(第三方插件)

3. 从网站页面响应的生命周期,分析出造成较差性能表现的原因

4. 进行技术改造,可行性分析等具体的优化实施---》(如大数据量加载;资源文件进行CDN缓存等)

5. 迭代优化---》(一个模块一个模块不断优化)

4.web性能报告——lighthouse

Lighthouse分析web应用程序和web页面,收集关于开发人员最佳实践的现代性能指标和见解,让开发人员根据生成的评估页面,来进行网站优化和完善,提高用户体验。

5.Lighthouse的使用方式

1. 使用google浏览器自带工具Lighthouse

2. 在google应用商店下载扩展程序

Lighthouse会从5个维度给出打分:检测得分 性能指标 优化建议 诊断结果及已通过的性能

经过检测,Lighthouse会对上述5个维度给出0~100的评估得分,得分能到达90分以上,则说明网站应用在该方面的评估表现符合最佳实践,如下图所示:

web 性能优化详解(Lighthouse工具、优化方式、强缓存和协商缓存、代码优化、算法优化),JS高级,性能优化,强缓存和协商缓存

整个评测结果会给出优化建议,将从下面几点说明

1. **移除阻塞渲染的资源**,

部分javascript脚本文件和样式表文件可能会阻塞系统通对网站页面的首次渲染,建议可将其以内嵌的方式引用,并考虑延迟加载。报告中会将涉及需要优化的资料文件排列在下面,每个文件还包括尺寸大小信息和优化后预计提升首屏渲染时间的效果,据此可安排资源文件优化的优先级

如elementui很多资源都是放在CDN里面,当使用elementui时就很可能遇到CDN服务器挂掉的时候,就可以将elementui资源通过内嵌script方式进行引入,当然elementui资源很多,实际开发中不可能直接引入,就可以通过npm下载包的形式引入

2. **预连接所需要请求的源**,

提前建立与所要访资源之间的网络连接,有两种方式。第一种是设置(link rel="preconnect")的预连接,另一种是设置(link rel="dns-prefetch")的DNS预解析。

3. **降低服务端的响应时间**

资源请求时,浏览器会发出get请求

图片资源收到同源策略影响,但是是运用了资源嵌入式请求,所以不会有跨域问题

网络查看里面如果区分ajax请求和fetch请求?network里面的type形式,ajax的type是xhr

服务器本身限制:带宽(浏览器和服务器之间传输速度),内核(服务器性能,响应快慢),内存(超过内存就会变慢)

高并发一般在后端,前端比如秒杀活动,太多人点击按钮

4. **适当调整图片大小**

除此之外,报告还给出诊断结果,同理以下几个维度来说明

web 性能优化详解(Lighthouse工具、优化方式、强缓存和协商缓存、代码优化、算法优化),JS高级,性能优化,强缓存和协商缓存

1. **对静态资源文件使用高效的缓存策略** 

比如对图片,css,js文件的缓存。如使用浏览器缓存;使用CDN静态资源缓存

2. **减少主线程的工作**

 浏览器在渲染主进程时需要处理大量工作:比如解析HTML构建DOM,解析css样式表文件和执行javascript文件。所以渲染进程的主线程繁忙会导致用户响应延迟的不良体验,在Lighthouse中会提供主线程对各个任务的执行耗时,让开发者可以针对异常处理过程进行有目标的优化

3. **减少http请求数**

如10张图片请求十次和将10张图做成一张图成一张图

针对图片:

对于小型的图片,比如不超过10kb的转化为base64,再通过background-image进行引入

大型图片:适当范围内进行压缩,产品接受范围内

小型icon图标:传统模式使用精灵图;字体图标形式(图标矢量库:放大缩小不会失真)

5.浏览器缓存策略

 强缓存

  - 不会向服务器发送请求,直接从缓存中读取资源,在chrome控制台的Network选项中可以看到该请求返回200的状态码,并且Size显示from disk cache或from memory cache。强缓存可以通过设置两种 HTTP Header 实现:Expires 和 Cache-Control。

  - Cache-Control

    - public 表示响应可以被客户端和代理服务器缓存

    - private 表示响应只可以被客户端缓存

    - max-age=30 缓存30秒后过期,需要重新请求

    - s-maxage=30 覆盖max-age,作用一样,只在代理服务器中生效

    - no-store 不缓存任何响应

    - no-cache 资源被缓存,但是立即失效,下次会发起请求验证资源是否过期

    - max-stale=30 30秒内,即使缓存过期,也使用该缓存

    - min-fresh=30 希望在30秒内获取最新的响应

  -  Expires

    - 缓存过期时间,用来指定资源到期的时间,是服务器端的具体的时间点。也就是说,Expires=max-age + 请求时间,需要和Last-modified结合使用。Expires是Web服务器响应消息头字段,在响应http请求时告诉浏览器在过期时间前浏览器可以直接从浏览器缓存取数据,而无需再次请求。

    **缺点**受限于本地时间,如果修改了本地时间,可能会造成缓存失效

- 强缓存的两个状态(network中的size属性中进行查看:页面首次打开从服务器获取,刷新后会从memory cache中读取,如果这个页面不关闭然后重新打开一个窗口访问刚才的同一个地址,会从disk cache中读取;都读取不到就会去服务器读取)

  - from memory cache

   - 不访问服务器,一般已经加载过该资源且缓存在了内存当中,直接从内存中读取缓存。浏览器关闭后,数据将不存在(资源被释放掉了),再次打开相同的页面时,不会出现from memory cache。

  - from disk cache

    - 不访问服务器,已经在之前的某个时间加载过该资源,直接从硬盘中读取缓存,关闭浏览器后,数据依然存在,此资源不会随着该页面的关闭而释放掉下次打开仍然会是from disk cache。

协商缓存

  - 协商缓存就是强制缓存失效后,浏览器携带缓存标识向服务器发起请求,由服务器根据缓存标识决定是否使用缓存,主要有以下两种情况:

    - 协商缓存生效,返回304和Not Modified(比强缓存会慢一些)

    - 协商缓存失效,返回200和请求结果 

6.精炼js代码

代码复用

减少业务复杂度

算法上优化(网站——力扣)

  - 一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。

动态规划

动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法。

动态规划背后的基本思想非常简单。大致上,若要解一个给定问题,我们需要解其不同部分(即子问题),再根据子问题的解以得出原问题的解。

- 适用情况

 - 最优子结构

    最优子结构性质。如果问题的最优解所包含的子问题的解也是最优的,我们就称该问题具有最优子结构性质(即满足最优化原理)。最优子结构性质为动态规划算法解决问题提供了重要线索。

 - 无后效性。

    即子问题的解一旦确定,就不再改变,不受在这之后、包含它的更大的问题的求解决策影响

 - 子问题重叠

     子问题重叠性质。子问题重叠性质是指在用递归算法自顶向下对问题进行求解时,每次产生的子问题并不总是新问题,有些子问题会被重复计算多次。动态规划算法正是利用了这种子问题的重叠性质,对每一个子问题只计算一次,然后将其计算结果保存在一个表格中,当再次需要计算已经计算过的子问题时,只是在表格中简单地查看一下结果,从而获得较高的效率。

6. 一道面试题:从浏览器地址栏输入URL后,到页面渲染出来,整个过程都发生了什么?

1、首先浏览器在输入URL之后,会先解析URL,判断是否合法;

2、合法的话会查看浏览器缓存,判断是否有缓存,如果有缓存,则显示;

3、如果没有缓存,浏览器会向服务器发送HTTP协议,会进行DNS解析,获取IP地址;

4、浏览器和服务器进行TCP连接,进行三次握手;

5、握手成功之后,浏览器会向服务器发送http请求,请求数据包;

6、服务器处理请求,将数据返回给浏览器;

7、浏览器收到HTTP响应后,会解析它;

8、浏览器发送异步请求,然后渲染页面

可以做到性能优化的点文章来源地址https://www.toymoban.com/news/detail-724761.html

  • 发出请求之前,对页面事件(滚动等)进行优化
  • 获取到数据后,部分,分页渲染
  • 资源文件缓存
  • 代码优化等

到了这里,关于web 性能优化详解(Lighthouse工具、优化方式、强缓存和协商缓存、代码优化、算法优化)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Web 前端性能优化之七:数据存储与缓存技术

    7、数据存储 在开发Web应用的过程中,会涉及一些数据的存储需求,常见的存储方式可能有: 保存登录态的Cookie; 使用浏览器本地存储进行保存的Local Storage和Session Storage; 客户端数据持久化存储方案涉及的Web SQL和IndexedDB; 直接存储在本机的文件系统上等。 文件系统、Web

    2024年04月12日
    浏览(31)
  • 前端性能测试工具 LightHouse (灯塔)使用

    Lighthouse是什么? —— 一种工具 Lighthouse 是一个开源的自动化工具,用来测试页面性能。 为什么要用Lighthouse? —— 提升用户体验 Web性能可以直接影响业务指标,例如转化率和用户满意度 分析收集各种应用页面性能指标,并进行评估,以此我们可以根据评估结果进行针对性

    2024年04月12日
    浏览(31)
  • 【Lighthouse前端性能分析工具】超详细!!!

    我们多数性能测试,基本上针对接口的性能测试,很少涉及到前端页面的性能测试。 但影响用户体验的因素除了后端接口数据的返回,还有前端页面的渲染等等。 所以我们除了在开发的过程中注意代码的质量,同时还需要专业的网站测试工具辅助,让我们知道自己的网页还

    2024年02月09日
    浏览(30)
  • 利用LightHouse进行合理的页面性能优化,看这一篇就够了!

    Lighthouse 是一款由 Google 开发的开源工具,用于评估 Web 应用程序的性能和质量。它可以分析 Web 应用程序的加载速度、渲染性能、可访问性、可用性和最佳实践等方面,提供详细的报告和建议。 官网 1.谷歌打开设置,搜索输入商店: 2.下载 Lighthouse : 3.我们从官网上下载一个

    2024年02月05日
    浏览(32)
  • http协议中的强缓存与协商缓存,带图详解

    此篇抽自本人之前的文章:http面试题整理 。 别急着跳转,先把缓存知识学会了~ http中的缓存分为两种:强缓存、协商缓存。 强缓存 响应头中的 status 是 200,相关字段有 expires(http1.0),cache-control(http1.1) ,两者同时出现时 cache-control 优先级更高。主要是利用 cache-control 的

    2024年03月16日
    浏览(42)
  • Python web实战之Django性能优化最佳实践详解

    大家好!今天分享如何优化使用Django应用的性能,使其在高并发、大数据量的情况下能够保持良好的性能。 数据库查询是Web应用中常见的性能瓶颈之一。 1.1 使用select_related和prefetch_related 在Django中,可以使用 select_related 和 prefetch_related 方法来优化数据库查询。这两个方法可

    2024年02月11日
    浏览(38)
  • 前端性能优化:缓存

    在快节奏的互联网时代,网站的加载速度直接影响用户体验和业务成功。而缓存作为性能优化的重要手段,可以大幅提升网页加载速度,减少服务器负担。本文将为你详解缓存的使用,帮助你优化前端性能,为用户呈现更快速、流畅的体验。 1. 什么是缓存? 缓存是指将已获

    2024年02月13日
    浏览(27)
  • 性能优化之-缓存篇

    什么是缓存?在哪可以看到?为什么要做? 百度百科可以解释,包含各种方向(缓存) 最常见就是目前看到这篇文章的位置-浏览器,打开F12, 中文汉字很好找;包括硬盘,服务器这些都是它的容器, 缓存的设置是所有现代计算机系统发挥高性能的重要因素之一。 本文简单

    2024年02月13日
    浏览(32)
  • Android性能优化—ViewPagers + Fragment缓存优化

    大家看标题,可能会有点儿懵,什么是ViewPagers,因为在很久之前,我们使用的都是ViewPager,但是现在更多的是在用ViewPager2,因此用ViewPagers(ViewPager、ViewPager2)来代替两者,主要介绍两者的区别。 ViewPagers嵌套Fragment架构,在我们常用的App中随处可见,抖音的首页、各大电商

    2024年02月01日
    浏览(50)
  • http缓存?强制缓存和协商缓存?

    HTTP缓存是一种优化网络资源加载速度的技术,通过减少从服务器获取相同资源的次数来实现。HTTP缓存机制包括强制缓存和协商缓存(对比缓存)两种类型。 强制缓存 强制缓存是指浏览器在接收到服务器返回的响应后,会将响应内容和相关缓存信息(如Expires和Cache-Control)保

    2024年02月22日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包