【Web性能优化】工具篇

427 阅读4分钟

五个工具面板

本篇会介绍5个工具:

  • Network 面板:查看页面时间线
  • Performance 面板:查看JS性能
  • Rendering 面板:查看页面渲染
  • Coverage 面板:查看代码使用率
  • Lighthouse 面板:查看优化建议

Network 面板

查看页面时间线

第一栏

image.png

Preserve log(不常用):当页面刷新的时候,是否保留上一个页面的log。

Disable cache:是否不启用缓存,一般会勾选,不启用缓存。

No throttling:模拟慢速网络。

image.png

点击右上角的设置,打开show overview就可以看到下面的时间线面板。一般可不看这个,看下面的Waterfall即可。

Network面板

image.png 右键单击tab栏,就会出现如图面板,勾选相应的选项,即可出现在tab栏中。

Waterfall

image.png

我们需要关注的是Request/Response这一块:

Request send:把请求内容全部发出去的时间,比如上传100M的文件,那么时间就会很长,如果只是一个get请求,那么时间会比较短;

Waiting for server response:等服务器返回内容的时间,这时浏览器什么都不会做(如果这个时间过长,那么你可以甩锅给服务器,或者是用户的带宽);

Content Download:下载相应的时间,如果下载一个1G的文件,时间会很长,如果下载一个json文件,那么时间会很短;

下面的Explanation是对每个字段的解释;

最下面的状态行

image.png

requests:发送请求数;

transferred:网络传输量;

resources:页面加载的资源量,它比transferred是会大的,因为有些插件不是从网络上下载的;

Finish:总共用的时间;

DOMContentLoaded:DOM ready的时间;

Load:首页资源加载的时间;

一般Finish时间最长,DOMContentLoaded的时间最短。

Performance 面板

查看JS性能

步骤

1、小技巧:先把<body>删除;

image.png

2、点击Performance 面板中的录制,紧接着点击页面左上角的刷新按钮,待刷新完成后,停止录制;

image.png

3、最后,会得到如下图所示内容,在第一栏那里选中,即可查看对应的内容;

image.png

分析

灰色内容是系统的,也就是浏览器的;黄色或紫色内容是JS相关的; 且分段的黄色是js文件按顺序执行,想要知道是哪个js,点击它,看下面Summary里的内容,点击名字还可以看对应的文件代码;

image.png

下图就是一个调用栈,如果有一块层级很低(比较靠下),而且执行时间很长,那么你就应该去优化一下它了;

image.png

Rendering 面板

查看页面渲染查看页面渲染

如何打开它

打开控制台,按ESC,若tab栏上没有,就点击左上角的三个点,点击Rendering,如下图

image.png

使用

Paint flashing

使用最多的是第一个属性Paint flashing,叫绘制闪烁,它会告诉你,你的页面哪些地方进行了重新绘制,比如一些动画元素,如下图,绿框里的内容一直在变化;

如果有些地方绘制得过于频繁,那么就需要进行优化了,可参考csstriggers,尽量使用不需要layout重构的属性,比如使用transform代替leftright这种;

image.png

Frame Rendering Stats

Frame Rendering Stats:帧率渲染统计,它出现在左上角,如果帧率低于30fps,那就有点卡了;

image.png

Coverage 面板

查看代码使用率

它的打开方式同Rendering 面板一样,只是点击三个点里的Coverage即可;

image.png

Lighthouse面板

查看优化建议

image.png

Categories

Performance:性能方面的建议;

Accessibility:可访问性方面的建议,看你的网页是否可适用于残障人士,比如眼睛不好啊,手不方便啊;

Best practices:最佳实践的建议;

SEO:关于SEO方面的建议;

Progressive Web App:关于PWA方面的建议;

Device

想要查看哪个端的建议;

把你想查看的勾选上,点击Analyze page load,生成报告

报告具体参数

Performance

image.png

First Contentful Paint:第一个内容的绘制时间;

Largest Contentful Paint:最大内容绘制时间;;

Time to Interactive:可交互时间;

Total Blocking Time:阻塞时间,一般是要做到0ms;

只告诉了评分,并没有告诉怎么去优化