Chrome Devtools中HTTP响应小于500字节的高“接收时间”

4
在使用Chrome 15(稳定版)的开发者工具网络选项卡时,在Windows 7和Windows XP上,我发现一些情况下HTTP响应的“接收”时间大于100毫秒,但是响应是302重定向或小图像(信标) - 负载低于500字节(标题+内容)。
在Wireshark上捕获TCP流量清楚地显示服务器在单个TCP包中发送了整个HTTP响应,因此接收时间应该为0。一个很好的例子是CNN主页,或任何有很多广告和跟踪信标的主要网站。
这引出了几个问题:
  1. 在Chrome开发者工具中,“接收”被定义为什么?这是从第一个数据包到最后一个数据包的时间吗?
  2. 除了网络/服务器通信之外,客户端机器/操作系统中有哪些因素会影响“接收”时间?
在我的测试中,我使用了Windows XP的虚拟机,而Windows 7则在桌面上(四核,8GB RAM)。
2个回答

1
  1. “接收时间”是指网络层报告的didReceiveResponse(“已接收响应头”)和didReceiveData(“已接收响应数据块”)WebURLLoaderClient事件之间的时间,因此可能会有一些内部处理开销。
  2. 通常情况下,请记住HTTP协议是流式定向的,因此TCP数据包之间的数据分割是不可预测的(您的一半头信息可能会进入一个数据包,其余部分和响应正文可能会进入下一个数据包,尽管这似乎不是您的情况。)
  3. 尽可能使用最新版本的Chrome。它可能包含更少的错误,包括网络层:-)

即使在最新版本的Chrome中,Alex也遇到了相同的问题。我的另一个担忧是,如果你使用wireshark进行监控,你会发现当DevTools开启时,TCP数据包的行为会发生变化。客户端的ACK会被延迟。 - Drit

1
Nagle算法和延迟ACK算法是两种拥塞控制算法,它们在Windows机器上默认启用。这些算法会引入延迟,以尝试减少TCP/IP的某些冗余。当接收小负载时,延迟ACK将导致Chrome网络选项卡中的“接收”时间增加约200毫秒。以下网页介绍了这些算法以及如何在Windows上禁用它们:http://smallvoid.com/article/winnt-nagle-algorithm.html

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接