我需要测量向客户端发送Web响应所需的时间 - 仅从服务器端。我知道有ajaxian和客户端方式这样做,但我仅限于服务器端测量客户端时间的唯一方法。
在服务器发送响应后,是否可以使用从客户端浏览器发回的ACK 粗略近似?
如...... http://www.usenix.org/event/usenix02/fu/fu_html/node10.html所述。
这个数字可靠吗?
答案 0 :(得分:0)
ACK会每发送两个段大致到达一次(如果一切正常)。他们告诉您客户已接受数据。因此,假设从客户端到服务器的行程时间相同,deltaAckNum / deltaT应该合理估计平均速度有多大。显然,这两个ACK段跨越的数据包越多越好。
如果查看Timestamp选项,可以在各个时间点获得RTT的估计 - 当一方在TSVal中发送时间戳时,另一方在返回数据包的TSEcr字段中回显它。虽然不仅仅是从客户端到服务器的延迟,但它有助于感受。
尽管如此,还有一些“但是”要提及:
1)除非你特意试图提高巨大文件传输的性能,因为有人抱怨,它可能很好 瓶颈在堆栈的其他地方。 (例如,元素彼此之间的依赖性要求它们全部被下载以始终可见,等等)。对于调试YSlow会很有用。
2)有问题的客户端可能在类似代理的中间盒后面,它会为TCP级别确认数据,但它本身会做一些“聪明”的事情(整形/内容过滤/等等)。