什么?页面卡顿?操作慢?

1、背景

两个月前做横幅特效的需求的时候,产品体验玻璃水滴的两种特效会导致网站整体变卡,之前没查出原因,就先下架了。最近潜心研究了下谷歌的工具,于是,把之前的两种特效特意拿出来研究下,把卡的问题解决,并上线,毕竟这两种特效还是不错的!

2、网页为什么会卡

网页卡常见原因:DOM操作频繁,频繁触发回流,循环耗时等。当然,大多数小问题导致的问题在网站的整体效果上看可能会感知不到,而当你感觉到卡的时候肯定是“出事了”,下面我们将通过谷歌工具把卡的问题纠出来。

3、实战演练

我们已最新版的谷歌为例子,截图如下:

Paste_Image.png
3.1 准备工作

1、在DevTools中,单击 Performance tab。
2、勾选Screenshots checkbox。
3、点击录制设置按钮。DevTools显示与捕获性能指标的相关设置。
4、对于CPU,请选择2x减速。 DevTools控制CPU,使其比平常慢2倍(两倍看不出问题就5倍)。当然这个看情况而定,目的是节流cpu,暴露问题。
5、上面操作后整体截图如下,注意画箭头的地方:

3.2 记录运行时性能

1、在DevTools中,单击记录。 DevTools在页面运行时捕获性能指标。

Paste_Image.png

2、等待数秒。
3、单击停止。 DevTools停止录制,处理数据,然后在“性能”面板上显示结果。如下图:

Paste_Image.png
3.3 分析结果

1、看看FPS图表。
每当您看到FPS上方的红色条纹,这意味着帧率下降得如此之低,以致可能会损害用户体验。 一般来说,绿色条越高,FPS越高。如下图:

Paste_Image.png

见红的那部分fps帧率很低,表示有问题。

2、看看CPU图表。
在FPS图表下方,可以看到CPU图表。CPU图表中的颜色对应于“性能”面板底部“摘要”选项卡中的颜色。 CPU图表充满色彩意味着CPU在录制过程中被最大化。如下图:

Paste_Image.png

3、时间点截图。
将鼠标悬停在FPS,CPU或NET图表上。 DevTools在该时间点显示页面的屏幕截图。如下图:

Paste_Image.png

4、发现性能瓶颈。
在时间轴上选中部分见红的部分(即fps很低的部分),展开“main”主线程。 DevTools随着时间的推移,显示主线程上的活动的火焰图表。 随着时间的推移,x轴表示录制。 每个格代表一个事件。 更宽的格意味着事件花费更长时间。 y轴表示调用堆栈。如下图:

Paste_Image.png

从上图可以很明显看出,“Animation Frame Fired”的格的右上角又见“红”了,说明有问题,点击这个“格”。如下图所示:

Paste_Image.png

谷歌工具已经看不下去了,给了个提示,Warning Recurring handler took 131.66 ms,循环导致的问题。再往下,点击具体的文件行数,可以定位问题。如下图:

Paste_Image.png

5、解决问题,该你了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,640评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,259评论 4 61
  • 9月29日,阳光明媚,蓝天白云。 中秋节是什么呢? 国庆节是什么呢? 大家快来围观新联幼儿园小朋友们的精彩表演吧 ...
    CCsuxiaoming阅读 328评论 0 0
  • “爱你让我变成诗人” 恰逢七夕,翻出去年整理的情书汇编。 给大家分享这些写不完的、超级可爱的情话,希望大家都能感受...
    胡红梅River阅读 2,375评论 2 9
  • 越来越意识到,渐渐的清醒和明白自己要选择一个什么样的方向,什么样的事也才会激发自己去努力,认真。 很长一段时间以来...
    开拓者2021阅读 1,077评论 0 0