17

我希望监控我们网站的最终用户体验,并将其与服务器端已经记录的时间信息相关联。我的假设是,这将需要 javascript 在请求开始时 (window.onbeforeunload) 和加载结束时 (window.onload) 捕获时间戳。基本上是这样 - “测量 Web 应用程序响应时间:与客户见面

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

8 回答 8

13

还有来自雅虎的Boomerang 。

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

于 2010-12-13T19:14:40.043 回答
9

为了完整起见,您现在可以在一些现代浏览器中使用导航计时 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 导航计时今天得到广泛支持 (10/2016)

于 2012-09-04T11:30:58.013 回答
7

编辑(2013 年):尝试Boomerang,就像 @yasei-no-umi 建议的那样。它被积极维护。

——老答案——

我们使用Jiffy

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

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

于 2009-04-27T12:18:27.000 回答
3

使用yslow(Firefox 扩展)之类的东西怎么样?

于 2009-02-13T20:13:14.327 回答
2

Jiffy的替代方案是Episodes

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

于 2009-05-07T19:09:38.270 回答
1

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

所以我们有时间:

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

帮助理解“慢”的客户端(CPU 或 ISP/带宽)

不调用 home 的 PS 页面渲染也很有趣 - 用户点击关闭(假设该会话中的其他页面渲染确实记录了 Phone Home)

于 2009-02-13T20:09:30.497 回答
-1

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

http://getfirebug.com/

见鬼的;这是最近提交给 SOSP 的一篇关于 AjaxScope 工具的有趣论文。有趣的是,这是一篇由 MS Research 发表的学术文章,显示 Firefox 的 Javascript 实现在某些情况下的性能比 Internet Explorer 好很多倍。:)

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

于 2009-02-13T20:13:37.743 回答
-1

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

Firefox: Web 开发人员工具栏 Firebug YSlow

IE: 提琴手

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

于 2009-04-27T12:23:17.863 回答