我正在尝试让客户端JavaScript选择网络延迟最低的服务器。目前,客户端向所有服务器发送XMLHttpRequest
,并选择加载速度最快的服务器。
但是,我注意到从请求中的send()
呼叫到收到响应的时间包括请求尚未发送的大量时间。
以下是Chrome开发者工具的屏幕截图:
可以看出,“Waiting(TTFB)”时间(绿色,红色箭头指向它)是我想要的网络延迟。但是,在“停顿”和“初始连接”状态下花费了大量时间。在这些状态下花费的时间(特别是“初始连接”)在请求之间差别很大,因此我现有的计算最小延迟的方法可能会产生错误的结果。
Google谈论每个部分here的含义。
XMLHttpRequest.readyState
属性似乎无法满足我的要求。我想我需要一个介于OPENED
和HEADERS_RECEIVED
之间的状态来表示请求已被发送,然后测量状态为HEADERS_RECEIVED
的时间。 (或者我在这里遗漏了什么?)
那么,有没有办法衡量我想要的时间,或者至少衡量一些接近的东西?