add: 优化指标和工具

This commit is contained in:
qianguyihao 2021-01-17 16:23:55 +08:00
parent 70fe324a5b
commit ba5f4b4b7a

View File

@ -19,20 +19,24 @@
我们可以看到淘宝网站的一些指标 我们可以看到淘宝网站的一些指标
- 资源量是 1.3M - 资源量是 1.3M
- DOM加载完成时间DOMContentLoaded511ms这是一个很关键的指标 - DOM加载完成时间DOMContentLoaded511ms这是一个很关键的指标
- 其他资源的总加载时间是 1.05 - 其他资源的总加载时间是 1.05
我们再来对比一下京东的
![](http://img.smyhvae.com/20210116-1357.png)
### 保存快照 ### 保存快照
network里的信息挺多我们可以将其保存下来留着以后做分析做对照 network里的信息挺多我们可以将其保存下来留着以后做分析做对照
![](http://img.smyhvae.com/20210115-1723.png) ![](http://img.smyhvae.com/20210115-1723.png)
如上图所示我们可以在 network 的空白处右键选择Save all as HAR with contentnetwork 信息保存为 HAR文件格式 如上图所示我们可以在 network 的空白处右键选择Save all as HAR with contentnetwork 信息保存为 **HAR**文件格式
HAR是一种标准的Web格式用户保存性能测试的结果里面的数据是json格式 **HAR是一种标准的Web格式用户保存性能测试的结果里面的数据是json格式**
我们可以使用第三方的 HAR 分析软件来打开 HAR 文件比如 我们可以使用第三方的 HAR 分析软件来打开 HAR 文件比如
@ -44,7 +48,6 @@ HAR是一种标准的Web格式用户保存性能测试的结果。里面的
![](http://img.smyhvae.com/20210115-1733.png) ![](http://img.smyhvae.com/20210115-1733.png)
### 瀑布图 Waterfall ### 瀑布图 Waterfall
![](http://img.smyhvae.com/20210115_1618.png) ![](http://img.smyhvae.com/20210115_1618.png)
@ -75,11 +78,11 @@ HAR是一种标准的Web格式用户保存性能测试的结果。里面的
3请求和响应 3请求和响应
- Request sent到这一步开始真正地请求资源 - Request sent到这一步真正开始请求资源
- Waiting**TTFB**资源从请求到响应有一个等待的时间 - Waiting**TTFB**资源从请求到响应有一个等待的时间
- Content Download资源的下载时间如果值月太大表明下载时间太长有些资源会造成阻塞导致网页的整体加载时间过长让用户等待太久 - Content Download收到响应后资源的下载时间如果值越大表明下载时间越长有些同步加载的资源会造成阻塞导致网页的整体加载时间过长让用户等待太久
**TTFB** 是一个很重要的指标它表示的是请求发出到响应到底要经历多久TTFB 可以给我们一个很直观的感受我们网站的请求和响应到底是快还是慢很大程度上是由 TTFB 决定 **TTFB** 是一个很重要的指标它表示的是请求发出到响应到底要经历多久TTFB 可以给我们一个很直观的感受我们网站的请求和响应到底是快还是慢很大程度上是由 TTFB 决定
@ -92,7 +95,7 @@ HAR是一种标准的Web格式用户保存性能测试的结果。里面的
**2纵向看**主要看两点 **2纵向看**主要看两点
1看资源与资源之间的联系如果发生阻塞说明资源可能是串行地按顺序加载可以按需要适当调整为并行 1看资源与资源之间的联系如果发生阻塞说明资源可能是串行地按顺序加载可以**按需要适当调整为并行**
2看关键的时间节点Waterfall 中有**两根时间线**蓝色的线是 DOM 加载完成的时间红色的线是所有资源加载完成的时间 2看关键的时间节点Waterfall 中有**两根时间线**蓝色的线是 DOM 加载完成的时间红色的线是所有资源加载完成的时间
@ -104,7 +107,7 @@ HAR是一种标准的Web格式用户保存性能测试的结果。里面的
关于交互体验的性能我们需要关注的是 关于交互体验的性能我们需要关注的是
- 交互动作的响应时间要短比如点击按钮后的弹窗在搜索框里输入关键字后的搜索结果 - 交互动作的**响应时间**要短比如点击按钮后的弹窗在搜索框里输入关键字后的搜索结果
- 页面滚动要流畅可以查看 FPS 帧率 - 页面滚动要流畅可以查看 FPS 帧率
@ -114,11 +117,14 @@ HAR是一种标准的Web格式用户保存性能测试的结果。里面的
这里首先科普两个概念 这里首先科普两个概念
- 刷新率显示器每秒有多少帧画面大多数显示器的刷新率是60帧/ - 刷新率显示器每秒有多少帧画面大多数显示器的刷新率是60帧/即60hz
- 帧率FPSframes per second视频或者动画的内容本身每秒有多少帧由显卡输出帧率
- 帧率FPSframes per second视频或者动画的内容本身每秒有多少帧 上面的两个参数中不要把刷新率帧率弄混了刷新率是屏幕的参数帧率是图像视频等内容的参数人眼最终看到的效果是以最低的参数为准的
上面的两个参数中人眼最终看到的效果是以最低的参数为准的 目前市场主流手机和电脑屏幕的刷新率基本都是60Hz即每秒显示60帧画面也就是说当我们在使用手机的时候本质上是手机在连续播放一张张静态图片每秒播放60张让肉眼误认为眼前的画面在动
![](http://img.smyhvae.com/20210107_2115.gif)
持续滑动的过程中如果页面输出到显示器的帧率低于60帧/则人眼会感觉卡顿 持续滑动的过程中如果页面输出到显示器的帧率低于60帧/则人眼会感觉卡顿
@ -143,7 +149,7 @@ Chrome官方给我们提供了下面这个网站用于观察 FPS 效果:
- <http://googlesamples.github.io/web-fundamentals/tools/chrome-devtools/rendering-tools/forcedsync.html> - <http://googlesamples.github.io/web-fundamentals/tools/chrome-devtools/rendering-tools/forcedsync.html>
我们可以借助第三方的 [chrome 插件]()来查看 fps参数 如果实在想要看fps我们可以借助第三方的 [chrome 插件]()来查看 fps参数
## RAIL 模型测量性能 ## RAIL 模型测量性能
@ -239,6 +245,16 @@ RAIL 模型是Google提出的可以量化性能的测量**标准**。我们做
## 使用Chrome DevTools 分析性能 ## 使用Chrome DevTools 分析性能
现在主流的性能测量工具
- Chrome DevTools开发调试分析性能
- Lighthouse 网站整体质量评估
- WebPageTest给网站提供多个地点的测试以及全面的性能报告
这一段我们先来讲一讲 Chrome DevTools
大家平时在用 Chrome DevTools 的时候一般使用来开发调试查看 DOMcss接口请求等但其实这个工具非常强大 大家平时在用 Chrome DevTools 的时候一般使用来开发调试查看 DOMcss接口请求等但其实这个工具非常强大
### size文件大小分析 ### size文件大小分析
@ -322,15 +338,7 @@ Timing参数中尤其注意看`DCL`DOMContentLoaded即DOM加载完
## 使用 WebPageTest 评估网站性能 ## 使用 WebPageTest 评估网站性能
现在主流的性能测量工具
- Chrome DevTools开发调试分析性能
- Lighthouse 网站整体质量评估
- WebPageTest给网站提供多个地点的测试以及全面的性能报告
这一段我们先来讲一讲 WebPageTest
程序员经常说的有句话是我这儿能打开啊我这儿不报错呀大家应该都懂这个梗这就是为什么我们要借助第三方的测试工具而不仅仅只是自己电脑上访问正常就ok了 程序员经常说的有句话是我这儿能打开啊我这儿不报错呀大家应该都懂这个梗这就是为什么我们要借助第三方的测试工具而不仅仅只是自己电脑上访问正常就ok了
@ -369,34 +377,38 @@ JD网站性能测试报告
拿到 WebPageTest 报告之后我们来看看报告里的几个重点指标 拿到 WebPageTest 报告之后我们来看看报告里的几个重点指标
![Xnip2021-01-16_13-14-24](/Users/meiyamin/Downloads//image/Xnip2021-01-16_13-14-24.png)
1摘要里的参数 1摘要里的参数
- First Byte第一个请求的响应时间可以反映后台的处理能力以及网络回路的情况 - First Byte第一个请求的响应时间可以反映后台的处理能力以及网络回路的情况
- Start Render从白屏到首次渲染的时间 - Start Render从白屏到首次渲染的时间
- Speed Index速度指数 - Speed Index速度指数
- **Total Blocking Time**页面被阻塞导致用户不能交互的累计时间 - **Total Blocking Time**页面被阻塞导致用户不能交互的累计时间
![Xnip2021-01-16_13-15-04](/Users/meiyamin/Downloads//image/Xnip2021-01-16_13-15-04.png)
2详情里的参数**First View** 2详情里的参数**First View**
First View展示的是首次访问时总的加载时间这里面提供的瀑布图 chrome DevTools里提供的更为详细 First View展示的是首次访问时总的加载时间这里面提供的瀑布图 chrome DevTools里提供的更为详细
点击进入 First View 的详情之后可以看到所有的资源请求都会在这里列出来 点击进入 First View 的详情之后可以看到所有的资源请求都会在这里列出来如下
![Xnip2021-01-16_13-16-11](/Users/meiyamin/Downloads//image/Xnip2021-01-16_13-16-11.png)
- page is Interactive页面在加载的过程中大部分时间段用户都是可以交互的这是非常有用的一个指标 - page is Interactive页面在加载的过程中大部分时间段用户都是可以交互的这是非常有用的一个指标
- Brower Main thread浏览器主线程的占用情况可以看看空闲的时间多不多 - Brower Main thread浏览器主线程的占用情况可以看看空闲的时间多不多
- CPU UtilizationCPU的使用情况 - CPU UtilizationCPU的使用情况
- 多张图片的资源请求 - 多张图片的资源请求
上图中我们可以看到多张图片的开始请求时间都是相同的也就是说如果让资源做**并行加载**我们就可以加大地减少加载时间最终所消耗的时间就由最大的图片来决定这是一个很好的优化技巧至于具体是怎么实现的可以自行了解 ![Xnip2021-01-16_13-16-50](/Users/meiyamin/Downloads//image/Xnip2021-01-16_13-16-50.png)
上图中我们可以看到多张图片的开始请求时间都是相同的也就是说如果让资源做**并行加载**我们就可以加大地减少加载时间**最终所消耗的时间就由最大的图片来决定**这是一个很好的优化技巧至于具体是怎么实现的可以自行了解
我们看到有一部分的请求被高亮出来了 另外我们看到有一部分的请求被高亮出来了
![](http://img.smyhvae.com/20210115-2250.png) ![](http://img.smyhvae.com/20210115-2250.png)
@ -406,8 +418,6 @@ First View展示的是首次访问时总的加载时间。这里面提供
### 局域网部署 WebPageTest 工具 ### 局域网部署 WebPageTest 工具
如果我们开发的页面还没有上线公网则无法访问这个时候我们也想通过WebPageTest看看网站的性能那要怎么办呢 如果我们开发的页面还没有上线公网则无法访问这个时候我们也想通过WebPageTest看看网站的性能那要怎么办呢
@ -439,9 +449,9 @@ lighthouse 是 chrome 浏览器的一个性能测量工具。我们先来看看
Lighthouse 跑分里最重要的两个指标如下 Lighthouse 跑分里最重要的两个指标如下
- First Contentful Paint从白屏到第一次出现内容的时间我们可以看到上面提供了一些加载过程的截图10屏里如果只有1到2屏是白屏说明体验还是可以的 - **First Contentful Paint****从白屏到第一次出现内容的时间**我们可以看到上面提供了一些加载过程的截图10屏里如果只有1到2屏是白屏说明体验还是可以的
- Speed Index速度指数 - **Speed Index**速度指数
我们不需要关心这个指数是怎么来的因为背后涉及一套很复杂的公式我们暂时只需关注这个数值 我们不需要关心这个指数是怎么来的因为背后涉及一套很复杂的公式我们暂时只需关注这个数值
@ -657,6 +667,12 @@ Connection type changed from 4g to 3g
## 总结