searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Chrome浏览器开发者工具之瀑布流(Watefall)

2024-06-24 09:35:43
48
0

一、背景

 在开发中经常遇到平台请求响应特别慢,严重影响使用和用户体验度。此时可以使用Chrome提供的开发者工具在前端页面上具体看到具体那里花费时间,方便定位问题。

 

二、F12中的Watefall是什么?

1、Watefall

Watefall是Chrome的瀑布流,可以看到请求花费时间具体到了那些部分,就是将一次HTTP请求所花的时间做了拆解,从而有助于分析和定位问题所在。

瀑布中有好几种颜色:浅灰,深灰,橙色,绿色,蓝色结合上面的解释,大概知道这些颜色代表的含义了:

浅灰:查询中
深灰:停滞,代理转发,请求发送
橙色:初始连接
绿色:等待中
蓝色:内容下载
除了这些横向的柱状图外,还有一条纵向的紫色的线

紫线是开始通过脚本加载资源的一个临界线,紫线之前,都是通过HTML文件进行加载的资源,要么是链接的SRC,要么是脚本的SRC;而紫线之后,就成了通过执行HTML文件加载进来的js script,进行加载资源的操作。这条线对于前端工程师至关重要,能够帮助进行前端性能优化分析。

2、浏览器F12 waterfall性能检测详解

Queueing是排队的意思,浏览器将资源放入队列时间,比如:遇到更高优先级的请求或请求并发超过6了。

Stalled 是阻塞  请求访问该URL的主机是有并发和连接数限制的,必须要等之前的执行才能执行之后的,这段时间的耗时

Proxy negotiation:与代理服务器协商时间

DNS Lookup :DNS解析时间,浏览器需要将域名转换成IP。

Initial connection 初始化连接时间,这里一般是TCP 3次连接握手时间

SSL https特有,如果网站使用了HTTPS,这个就是浏览器与服务器建立安全性连接的时间

Request sent 发送请求所消耗的时间

Waiting(TTFB)等待服务端返回数据的时间,浏览器等待响应第一个字节到达的时间。包含来回的延迟时间和服务器准备响应的时间,这个时间受制于服务端处理性能,这里一般是最耗时的,

Content Download 浏览器用来下载资源所用的时间。这段时间越长,说明资源越大。理想情况下,你可以通过控制资源的大小来控制这段时间的长度

3、瀑布图提供了三个直观的东西来帮助我们进行前端性能优化

首先,减少所有资源的加载时间。亦即减小瀑布图产品的宽度。瀑布图越窄,网站的访问速度越快

其次,减少请求数量也就是降低瀑布图的高度。瀑布图越矮越好

最后,通过优化资源请求顺序来加快渲染时间。从图上看,就是将绿色的“开始渲染”线向左移。这条线向左移动的越远越好

三、F12的TTFB 是什么?

TTFB (Time to First Byte):首字节时间。在百度站长工具里面的解释是:“浏览器开始收到服务器响应数据的时间=后台处理时间+重定向时间,是反映服务端响应速度的重要指标”。

“首字节时间”顾名思义就是在浏览器输入目标网站的网址并回车后(或者搜索页面点击打开新的目标页面时)直到获得首个字节的时间。再解释一下,后台处理时间(这应该是浏览器访问目标网站网址时,发出请求,域名服务器的处理时间,将请求发送到目标网站所在服务器ip),重定向时间(这应该是域名服务器将请求发送到目标网站服务器后,如果服务器有重定向设置,就处理重定向的时间)。

总而言之,首字节时间包括DNS、socket连接和请求响应时间,且越短了越好。这是反映服务端响应速度的重要指标。首字节时间越短,表明服务器端(域名DNS服务器和网站服务器)响应速度越快,反之越长,表明服务器端响应速度慢。

TTFB是浏览器请求发送到服务器的时间+服务器处理请求时间+响应报文的第一字节到达浏览器的时间。我们用这个指标来判断你的网络服务器是否性能不够,或者说你是否需要使用CDN。

四、如何优化,降低TTFB时间呢?

1、 看一下详情分析页面。 

(1)DNS解析:如果是 DNS 解析时间太长,那是你的域名解析服务器不好,请更换靠谱的 DNS 服务器。 

(2)初始化连接:如果是初始化连接的时间太长,那是你机房的网络不好,请更换更好的机房 

(3)如果上面两个都不是。那就是你的代码性能不好,代码执行消耗的时间太长。请优化代码,或者更换更好的机器。 

缩短服务器响应时间,最简单直接并且有效的办法就是使用缓存,把 PHP 和 MySQL 的执行时间最小化,一些缓存插件可以把 SQL 查询结果缓存起来,把几十次查询结果转换为几次;一些缓存插件可以直接把用户所请求的页面静态化,用户打开网页时,相当于直接从服务器上下载了静态页面。

(4)如果是 Cookie 的原因,可以通过修改应用程序,删除一些不必要的 Cookie,或者精简 Cookie 内容,缩短 Cookie 的有效期等,都是解决办法。

2、客户端t1时刻发起对于某个url的请求,经过DNS解析获取相应的IP地址后,发起对该IP地址的socket连接,在完成三次握手建立tcp连接后,客户端发送http请求信息,服务端收到请求后返回响应的内容,当客户端在t2时刻收到服务端返回内容的第一个字节,则第一字节时间=t2-t1。 第一字节的时间= DNS解析的时间+socket三次握手时间+http请求时间+第一字节返回的时间。 首字节的时间是0,说明很快呀。不需要做优化

0条评论
0 / 1000