衡量客户端页面加载时间的最佳方法是什么?

时间:2009-02-13 20:03:20

标签: javascript performance monitoring client-side timing

我希望监控我们网站的最终用户体验,并将其与已记录在服务器端的计时信息相关联。我的假设是,这需要javascript在请求开始时(window.onbeforeunload)和加载结束时(window.onload)捕获时间戳。基本上这是 - “Measuring Web application response time: Meet the client

  1. 有更好的方法吗?
  2. 我应该期待什么样的性能损失(数量级)?
  3. 结果有多好?

8 个答案:

答案 0 :(得分:13)

雅虎还有Boomerang

Jiffy和Episodes中没有一些高级功能。在支持它的浏览器中支持Navigation Timing API(Chrome 6,IE 9)

答案 1 :(得分:8)

为了完整性'此外,您现在可以在某些现代浏览器中使用导航计时API:https://developer.mozilla.org/en-US/docs/Navigation_timing

function onLoad() { 
  var now = new Date().getTime();
  var page_load_time = now - performance.timing.navigationStart;
  console.log("User-perceived page loading time: " + page_load_time);
}

第三方编辑

基于caniuse.com navigation timing今天(2016年10月)得到广泛支持

答案 2 :(得分:7)

EDIT(2013):尝试Boomerang,就像@ yasei-no-umi建议的那样。它得到了积极的维护。

- 旧答案 -

我们使用Jiffy

使用和修改非常简单 - 我们编写了自己的服务器端代码(而不是Jiffy的Apache + perl)并使用了Jiffy的JS。

关于性能损失 - 客户端没有一个。 JS本身非常快,并且在页面加载后可以使用XHR完成向服务器的报告,这不会影响用户体验。在服务器端,您将获得两倍的请求。如果这是一个瓶颈,你可以为时序响应设置一个不同的服务器。

答案 3 :(得分:3)

如何使用yslow(firefox扩展名)?

答案 4 :(得分:2)

Jiffy的替代方案是Episodes

两者都涉及检测您的Javascript以跟踪各种时间,并在中央服务器上记录这些时间。

答案 5 :(得分:1)

我们在页面中有一个“回调”(1x1透明GIF图像,其中一个参数表示页面渲染的ID),该页面将“已查看页面”记录到我们的数据库中。这是与页面本身记录的ID相同的记录,并且在渲染完成时我们有一个日志条目。

所以我们有时间:

  • 页面准备已开始
  • 页面准备/响应完成
  • 渲染完成时客户打电话回家

帮助理解“慢”(CPU或ISP /带宽)

的客户端

P.S。不会打电话回家的页面渲染也很有意义 - 用户点击(假设该会话中的其他页面渲染确实录制了电话主页)

答案 6 :(得分:-1)

我对这些方法很怀疑。其中一些方法比必要的更复杂,我质疑这些数据的准确性。我要做的是让测试人员去各种网络并使用类似Firebug的东西:

http://getfirebug.com/

哎呀;这是一篇最近提交给SOSP的有趣文章,名为AjaxScope。有趣的是,这是一篇由MS Research提供的学术文章,显示Firefox的Javascript实现在少数情况下比Internet Explorer表现好多倍。 :)

http://research.microsoft.com/en-us/groups/rad/sosp07.pdf

答案 7 :(得分:-1)

我们倾向于使用以下组合:

火狐: Web Developer Toolbar Firebug YSlow

IE: Fiddler

在所有这些中,我发现YSlow提供了有关如何改善加载时间的最佳信息,但Fiddler提供了有关您可以通过线路获得的最佳信息,甚至可以模拟不同的信息网络速度。