浏览器请求时间分布

 

我们通过浏览器打开一个网页,有可能会加载很多资源,而这个页面最终正确展示所消耗的时间就是各个资源总的加载时间,而一个页面加载慢不一定是后端server响应慢,原因有多种,有可能是等待时间长,有可能是资源下载慢;这里对一请求的各个步骤做个解释,便于后续具体问题具体分析;

从上图我们可以看出百度首页的加载过程,以及各个步骤的耗时,下面一一介绍下;

Queueing:

    这个是请求从加到队列到开始执行的耗时;我们页面如果请求的网络资源比较多,则浏览器会发起并发连接请求,谷歌最的并发数是6,所以如果我们页面请求的网络资源数如果超过6个,则会放入队列中等待执行;

Stalled:
浏览器准备发出请求指令,到请求可以发出的等待时间,一般是代理协商、以及等待可复用的TCP连接释放的时间,不包括DNS查询、建立TCP连接等时间等。浏览器对同一个主机域名的并发连接数有限制,因此如果当前的连接数已经超过上限,那么其余请求就会被阻塞,等待新的可用连接;此外脚本也会阻塞其他组件的下载。
从下面的图中可以看出,如果短时间内浏览器的请求数过大,则Queueing和Stalled会处于长时间的等待执行状态,耗时会很长:

 

 

 

DNS Lookup:

    DNS 解析时间。在 DNS 查找完成之前,浏览器不能从主机名那里下载到任何东西。没有本地缓存的时候,DNS查询的时间比较长。但是比如在 host 中设置了 DNS,或者第二次访问,由于浏览器的 DNS 缓存还在,这个时间就非常短了。

Initial connection:

    浏览器建立 TCP 连接的时间,浏览器从发请求开始到 TCP 握手结束这一段时间,包括 DNS 查询 + Proxy 时间+ TCP 握手时间。

SSL:
    http是超文本传输协议,以明文方式发送内容,不提供任何方式的数据加密,如果被不法分子截取浏览器和服务器之间的传输报文,会获取其中的信息。
    https 是安全套接字层超文本传输协议,就是在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。因此建立HTTPS连接的时间相当于三次握手的时间+SSL时间。

Request sent:

    服务器发送HTTP请求,从第一个字节发出前到最后一个字节发出后的时间。

Waiting(TTFB):

    从浏览器发起请求,到服务器的首字节响应的时间(Time To First Byte)。这个阶段通常是耗费时间最长的。可能受到线路、服务器距离等因素的影响。

Content DownLoad:

    收到响应的第一个字节,到接受完最后一个字节的时间,就是资源下载时间。

 

posted @ 2021-11-12 11:12  奋斗吧🚗少年  阅读(685)  评论(0)    收藏  举报