Hibop / Hibop.github.io

Hibop 个人博客
https://hibop.github.io/
23 stars 1 forks source link

关于DevTools中的Waiting(TTFB)和stalled时间时间分析和性能优化 #38

Open Hibop opened 6 years ago

Hibop commented 6 years ago

有图有真相,先放一个图,熟悉的qi请求,熟悉的味道; image

TTFB(Time to First Byte):首字节时间

首字节时间是浏览器在接收数据之前需要等待多长时间。换句话说,这是等待初始响应的时间。这就是为什么它非常重要......为了让页面呈现,它需要接收必要的HTML数据。获得该数据所用的时间越长,显示页面所需的时间就越长。

waiting(TTFB)表征了一些事情:

服务器响应时间:

这是服务器生成响应并将其发回的时间。好消息是,如果这是瓶颈,那么你对它有更多的控制权。那么,假设你有权访问服务器。 坏消息是你有一些工作要做。你必须弄清楚你的系统的哪一部分需要时间来响应,这可能是很多事情。 根据Google的PageSpeed Insights,您的服务器响应时间应该低于200ms。 如果响应比较慢,说明:

传输字节的时间:

互联网可能相当快速,取决于您的位置和您可以访问的连接类型,但即使如此,我们仍受限于数据包必须传输的距离。根据Ilya Grigorik的说法,我们已经非常接近光速,所以除非我们弯曲物理学,否则我们不应该期待更高的速度。那么加快速度的方法是缩短距离。 这就是CDN进入的地方,这就是你可以改进这一部分的方法。

测量网络时间

一种可用的工具称为导航定时API。 image 了解如何在介绍中实现API


Stalled(阻塞):请求被挂起页面加载缓慢

浏览器对同一个主机域名的并发连接数有限制,因此如果当前的连接数已经超过上限,那么其余请求就会被阻塞,等待新的可用连接;此外脚本也会阻塞其他组件的下载;   优化措施: 1 将资源合理分布到多台主机上,可以提高并发数,但是增加并行下载数量也会增大开销,这取决于带宽和CPU速度,过多的并行下载会降低性能; 2 脚本置于页面底部; image

前端Dashboard页面展示的图表数据最好是提前统计好,然后放到缓存里面,避免统计时间比较长的ajax请求太多阻塞其他请求。