测量Ajax请求往返时间的一个简单方法是测量请求开始和结束之间的时间(readyState 4)。这种测量有很多例子。
但这种测量并不准确。Ajax回调只有在浏览器事件循环中出现时才会被调用。这意味着,如果其间有一些阻塞操作,则测量值也将包含一些客户端处理时间,而不是实际的服务器往返时间(服务器处理时间+网络时间)。
我知道这种功能现在可以通过Resource Timing API规范获得,但目前它并没有在所有浏览器中一致实现。
有没有其他方法可以找出真正的往返时间或时间戳,在这个时间点服务器响应可用并等待相应的回调执行?
网络信息.rtt
您可以使用navigator.connection.rtt
来获得当前连接的估计有效往返时间,四舍五入到25毫秒的最接近倍数。
const estimated_round_trip_time = navigator.connection.rtt;
console.log(estimated_round_trip_time);
注意:在发布时,
navigator.connection.rtt
仍被视为实验技术。预期行为在未来会发生变化,在应用程序中使用它之前要小心。请参见浏览器兼容性。