27

我正在检测连接速度,所以我计划使用window.performance对象进行持续时间计算。

我对 window.performance.timing 对象是基于整个页面加载或基于最后的请求和响应生成的有点困惑。

例如:

我有 5 个服务器调用来加载网页,performance.timing对象是基于所有 5 个服务器调用或基于第 5 个服务器调用(最后一次调用)生成的。

示例连接速度计算供参考

 var bitsLoaded = 100000; //bits total size of all files (5 server call).
 var duration = performance.timing.responseEnd - performance.timing.navigationStart;
 var speedBps = Math.round(bitsLoaded / duration);
 var speedKbps = (speedBps / 1024).toFixed(2);
 var speedMbps = (speedKbps / 1024).toFixed(2); 

有什么不清楚的准备解释

关于 window.performance 的任何想法

4

2 回答 2

54

性能.时间

不确定此图表是否能让您更好地了解 performance.timing。

对于您的问题:

我有 5 个服务器调用来加载网页,performance.timing 对象是基于所有 5 个服务器调用或基于第 5 个服务器调用(最后一次调用)生成的。

答案是:performance.timing根据所有请求和响应生成(但不包括 ajax 的)。

对于您提供的示例连接速度计算脚本,我想下面一个更好。

var duration = performance.timing.responseEnd - performance.timing.responseStart;

原因是:从navigationStart到的持续时间responseEnd 包括不将任何数据从服务器传输到客户端的 DNS 时间

时序定义请参考https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/NavigationTiming/Overview.html

于 2013-05-29T09:07:46.570 回答
1

performance.timing 不是基于最后的请求和响应。它测量页面生命周期中navigationStart阶段和loadEventStart阶段之间的延迟。正如这里所解释的,它的主要用途是确定页面加载速度。

在我看来。performance.timing 不能真正用于测量连接速度,因为它是在用户收到响应后启动的,并且是一个在浏览器上运行的 javascript 对象我建议您简单地 ping 用户并使用往返时间。

于 2013-06-09T23:22:56.653 回答