详解 第 一次缓冲时间 测试结果分析过程中,经常遇到第一次缓冲时间 FirstBufferTime,并且发现大 部分系统的响应时间也都浪费在了这里,再给研发解释这个问题时候,又不能拿 FirstBufferTime 直接给研发说,抽时间整理了下,希望对大家有用
以下资料来自 LR 帮助手册:
定义: 第一次缓冲时间细分图显示成功从 Web 服务器返回的第一次缓冲之前的这 一段时间内,每个网页组件的相关服务器/网络时间(以秒为单位)
网络时间:从发送第一个 http 请求那一刻直到收到确认为止,所经过的平均时 间
服务器时间:从收到初始 http 请求确认(通常为 get)直到成功收到来自 Web 服务器的第一次缓冲为止,所经过的平均时间。
注意:要从客户端测定服务器时间,因此发送初始 HTTP 请求到发送第一次缓冲 这一段时间内网络性能发生变化,则网络时间可能会影响此度量,因此所显示的 服务器时间是一个估计值,可能不太精确
如果细心看了后面的注意,很多人就明白了,所有关于 FirstBufferTime 时间的 度量都是来自客户端的。至于帮助手册里面的不太精确,还有这个网络时间和服 务器时间如何计算,我分析了下,个人观点如下:
首先要了解 http 传输,这个大叔以前发过相关资料,
这里推荐个网址 http://www.cnpaf.net/Class/HTTP/200408/83.html
里面有个形象的举例,就是电话订货,到送货上门, 这里拿图讲例子;
上图类似于 http 链接 请求响应模式,其中 很明显
网络时间=N1+N2+N3
响应时间=R1+R2
而根据 LR 结果分析定义发现
网络时间=N1+R1+N2
响应时间=R2+N3
O(∩_∩)O
怎么解释呢 ?N1 过程为建立链接过程,就是客户端给服务器端发送请求说,我 要取什么东西,R1 为服务器响应时间,响应结果只是收到,然后经过 N2 传输给 客户端,OK 链接建立,但是服务器响应还没结束,要准备客户端所索取的数据, 所以继续响应,(此时对 http 来说,客户端处于等待接收状态),然后把结果 传输给客户端,这就是 N3 时间
LR 在计算结果时候 拿 R1 和 N3 进行了抵消,所以给出来的只是近似值