window.performance javascript的解释

时间:2013-05-29 08:03:23

标签: javascript

我正在检测连接速度,因此我计划使用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的任何想法

2 个答案:

答案 0 :(得分:44)

performance.timing

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

对于您的问题:

  

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

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

对于您提供的示例连接速度计算脚本,我猜以下更好。

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

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

有关时间的定义,请参阅https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/NavigationTiming/Overview.html

答案 1 :(得分:1)

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

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