2013-05-29 83 views
18

我正在检测连接速度,所以我打算用window.performance对象进行持续时间计算。window.performance的说明javascript

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

例如:我有5服务器征集网页加载

,基于所有5调用服务器或基于第五服务器调用(最后一次通话)产生performance.timing对象。

样品连接速度计算参考

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任何想法

回答

38

performance.timing

不知道这个图给出你更好地了解performance.timing。

对于你的问题:

我有5服务器征集网页加载,performance.timing对象 是基于所有的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了解时间的定义。

+0

请注意'performance.timing.responseEnd - performance.timing。responseStart;'只会测量从服务器发送的根文档(例如HTML)的时间,而不是karthick提到的5个服务器调用和100000个位。 – NicJ

1

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

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

+0

嗨,我仍然有点困惑它如何真正起作用,但我确实得到了一般事实。对于开放我使用“navigationStart和loadEventStart”,这将是正确的吗?现在我有一个问题,因为当页面被加载或者URL被访问时,这个性能类会发生(根据我的理解?),那么我怎样才能获得关闭网页的速度?这是另一个班吗? –