Skip to content

Chrome Performance

问题描述

在开发 haida-webapp 时,第一次加载 luckysheet 组件可以正常渲染,第二次加载浏览器会卡顿大概8秒才会有响应。 具体效果如下: 卡顿录屏

问题分析

排除接口耗时

根据录屏可看到,程序在进入新页面后,n个请求都在 pending 状态,但在接口成功请求后对应接口的耗时却都是毫秒级别。这里可以排除是接口耗时造成的。

排查该问题时发现的另一个问题

在排查本问题时,发现每次 create 组件都会往 head 中重复追加 css 以及 js 文件。如下图: 重复挂载

这样会造成多次加载重复的资源,调试发现是 luckysheet 在最新版本的源码中每次 create 都会追加文件,但并没有在 destroy 的时候移除这些无用文件。

这是一个修复项,但并不是此次浏览器卡顿的原因。

定位问题

怀疑项都没能得到确认后,通过 Chrome Performance 进行性能分析来排查原因。

在上图中可以看到 handleClearData 方法耗时 8.9s,这显然是异常的,对应修复就可以啦。🎉