前端性能&异常分析排查流程

一、背景

随着 Web 应用程序的变得越来越复杂,前端性能优化变得越来越重要。在确保前端应用程序提供无与伦比的用户体验的同时,还需考虑到性能方面的因素。

二、前端性能、异常调试方式

前端性能分析和排查可以使用多种工具和方法,以下是一些常用的调试方式:

  1. 使用 Chrome 开发者工具:Chrome 提供了强大的开发者工具,包括 PerformanceMemoryNetworkPerformance MonitorConsole 等选项卡,可以帮助开发者快速定位性能瓶颈,并提供详细的性能信息和建议。
  2. 使用 Lighthouse 工具:可以自动测试网站的性能、可访问性和最佳实践等指标,并提供建议和改进方案,帮助开发者全面评估网站的性能和质量。
  3. 使用第三方插件:如vue-devtools

三、适用的场景和举例

场景一:表格类(例如:优化子表单性能)

产生原因:

在表格类的场景下,通常需要加载大量的数据和样式,可能存在以下性能问题:

  • 页面加载缓慢。
  • 用户响应不及时。
  • 表格滚动不流畅。
调试流程:

1、Network

查看选项卡中的请求响应时间和大小,尝试减少请求次数

2、vue-devtools

查看组件渲染时间,判断是否存在优化空间

3、Performance Monitor

可以通过Performance Monitor观察内存、CPU负载和DOM节点数量

4、Performance

使用 Chrome 开发者工具中的Performance 选项卡,查看页面加载过程中的时间线,并分析每个时间段的耗时情况。

场景二:首屏优化(例如:首页加载优化)

产生原因

对于需要快速显示的页面,需要尽快将首屏内容呈现给用户。这种情况下,可能存在以下性能问题:

  • 首屏加载过慢,用户无法快速获取信息
  • 单次请求的资源
调试流程

1、Network

查看资源、接口加载时间,判断是否存在优化空间

2、Performance Monitor

查看内存、CPU负载情况,查看在加载时是否有内存、CPU是否有飙高

3、vue-devTools

查看组件渲染时间,判断是否存在优化空间

4、LightHouse

对网站整体性能进行评估和分析,并提供相应的优化建议。

5、Performance

分析操作时产生的长任务,查看是否为某个函数执行时间很长

场景三:页面空白/网页崩溃

产生原因
  1. 代码错误:在 HTML、CSS 或 JavaScript 代码中存在语法或逻辑错误,导致页面无法正常渲染或执行。
  2. 缺少必要资源:例如图片、样式表、脚本等文件不存在或路径错误,导致页面无法加载或显示出错。
  3. OOM(内存溢出)、CPU 负载过高等问题, 导致页面无法响应请求或者数据渲染速度缓慢。
  4. 网络问题:网络连接不稳定或者存在网络屏蔽、DNS 解析失败等问题,导致页面无法从服务器正常获取数据和资源。
  5. 第三方库冲突:使用了多个第三方库或框架,可能会产生依赖冲突或版本不兼容的问题,导致页面无法正常运行。
  6. 安全问题:浏览器插件、恶意软件、攻击事件等可能会影响页面的安全性和可用性。
调试流程

1、Console

本地运行代码,查看是否存在报错的情况

2、Network

查看是否有资源加载失败,导致页面加载失败

3、Performance Monitor

查看内存、CPU负载情况

4、Memory

通过快照查看页面中的内存占用情况,并分析占用较多的内存对象和变量

5、LightHouse

对网站整体性能进行评估和分析,并提供相应的优化建议

6、Performance

分析内存溢出操作时的长任务,查看是否为某个函数执行时间很长

7、tbs调试

目前支持系统:安卓;

调试步骤:

1、手机打开usb调试模式;

2、用数据线将手机连接至电脑上;

3、在企业微信app上打开http://debugx5.qq.com;

4、按照以下步骤开启tbs

5、pc电脑上打开edge,输入edge://inspect/#devices

6、手机上切换至故障页面,在edge上点击对应页面进行排查(点击inspect)

四、调试方式使用技巧

Performance 使用技巧
  1. 本地运行代码,方便定位到源码
  2. 控制台找到 “Performance”, 圆形按钮为"开始录制"

3、点击“开始录制”,开始复现卡顿操作,就会得到这张图

其中长的Task就为长任务

4、点击长任务,可以看到执行的总时长,可以从这里分析是渲染的时间占比长还是函数调用的时间长

5、点击Call Tree 或者 Event Log进行分析

注:当电脑配置低或者该操作会造成很严重的卡顿时,不要点击Event Log,浏览器会崩溃!!!

点击执行长的活动,右边是对应的文件位置

最后,可以根据占比长的活动进行分析

Network 使用技巧

1、这里显示接口 + 资源加载的总时长

2、查看接口、资源执行时长,判断是否有优化空间

3、查看js资源执行是否正常,资源加载失败可能造成页面渲染失败或者函数执行失败

4、查看js资源是否加载时间过长,针对该资源进行拆解或加速

Console 使用技巧

在我们进行业务代码调试的时候,通过会通过console.log()进行输出一些信息

除此之外,还有哪些可以进行输出呢

1、console.table():以表格形式输出数据到控制台,便于查看和分析。

例子:console.table(this.operations)

2、console.assert():对一个条件表达式进行断言,并在条件不成立时输出指定的错误信息到控制台。

例子:

const errorMsg = 'the # is not even';
for (let number = 2; number <= 5; number += 1) {
    console.assert(number % 2 === 0, {number: number, errorMsg: errorMsg});
}

3、console.warn():输出警告信息到控制台,并标记为警告类别。

例子:console.warn(this.operations)

4、console.error():输出错误信息到控制台,并标记为错误类别。

例子:console.error(this.operations)

5、console.count():统计代码执行次数,并输出结果到控制台。

例子:

for (i = 0; i < 10; i++) {
    for (j = 0; j < 10; j++){
        console.count();
    }   
}

6、console.trace(): 方法用于显示当前执行的代码在堆栈中的调用路径。

例子:

<button onclick="myFunction()">跟踪轨迹</button>

function myFunction() {
  myOtherFunction();
}

function myOtherFunction() {
  console.trace();
}

调用轨迹会显示在控制台上

lightHouse 使用技巧

开始分析之后,静等一段时间,会生成一份性能分析报告

这里是性能的各项指标,并在下面给出了优化建议

第一个减少未使用的js,可以针对这个建议进行首屏优化,优化后可以大幅度提高加载速度

Memory 使用技巧

参数介绍

Constructor:对象的类名

Distance:对象到根的引用层级

Objects Count:对象的数量

Shallow Size:对象本身占用的内存,不包括引用的对象所占内存

Retained Size:对象所占总内存,包含引用的其他对象所占内存

Retainers:对象的引用层级关系

点击“take snapshot” 添加快照

建立第一张快照,可以看到内存大小,以及对应的对象或数组大小,点击之后可以在下面看到详情

执行一些业务(添加数据,滚动,编辑等),添加第二张快照

在右侧可以看到内存增加了多少MB

点击左上角的“comparison” 后可以跟前一张快照进行对比

#New - Comparison 特有 - 新增项

#Deleted - Comparison 特有 - 删除项

#Delta - Comparison 特有 - 增量

vue-devtools 使用技巧

打开vue-devTools后,进行页面刷新,可以看到各项组件的渲染时间

备注:vue-devtools版本 6.5.0及以上才有这个功能!

Performance Monitor 使用技巧

切换到性能(Performance),按钮ctrl + ` 打开第二控制台,选中性能监视器(Performance Monitor),就可以实时查看内存和CPU的情况


作者:道一云低代码

作者想说:喜欢本文请点点关注~

更多资料分享

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道一云黑板报

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值