我希望监控我们网站的最终用户体验,并将其与服务器端已经记录的时间信息相关联。我的假设是,这将需要 javascript 在请求开始时 (window.onbeforeunload) 和加载结束时 (window.onload) 捕获时间戳。基本上是这样 - “测量 Web 应用程序响应时间:与客户见面”
- 有更好的方法吗?
- 我应该期待什么样的性能损失(数量级)?
- 结果有多好?
我希望监控我们网站的最终用户体验,并将其与服务器端已经记录的时间信息相关联。我的假设是,这将需要 javascript 在请求开始时 (window.onbeforeunload) 和加载结束时 (window.onload) 捕获时间戳。基本上是这样 - “测量 Web 应用程序响应时间:与客户见面”
还有来自雅虎的Boomerang 。
具有 Jiffy 和 Episodes 中不存在的一些高级功能。在支持它的浏览器中也支持Navigation Timing API(Chrome 6、IE 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)
使用yslow(Firefox 扩展)之类的东西怎么样?
我们在页面中有一个“回调”(一个 1x1 透明 GIF 图像,其参数表示页面渲染的 ID),该页面将“查看的页面”记录到我们的数据库中。即记录与记录页面本身具有相同 ID 的记录,并且当我们的渲染完成时我们有一个日志条目。
所以我们有时间:
帮助理解“慢”的客户端(CPU 或 ISP/带宽)
不调用 home 的 PS 页面渲染也很有趣 - 用户点击关闭(假设该会话中的其他页面渲染确实记录了 Phone Home)
我很怀疑这些方法。其中一些方法比必要的更复杂,我质疑这些数据的准确性。我要做的是让测试人员去各种网络并使用诸如 Firebug 之类的东西:
见鬼的;这是最近提交给 SOSP 的一篇关于 AjaxScope 工具的有趣论文。有趣的是,这是一篇由 MS Research 发表的学术文章,显示 Firefox 的 Javascript 实现在某些情况下的性能比 Internet Explorer 好很多倍。:)
我们倾向于使用以下组合:
Firefox: Web 开发人员工具栏 Firebug YSlow
IE: 提琴手
在所有这些中,我发现 YSlow 提供了关于如何改善加载时间的最佳信息,但 Fiddler 提供了关于您可以通过网络期待什么的最佳整体信息,甚至可以模拟不同的网络速度。