我希望监测我们网站的用户体验,并将其与已在服务器端记录的时间信息进行关联。我的假设是需要使用javascript来捕获请求开始时的时间戳(window.onbeforeunload)和加载完成时的时间戳(window.onload)。基本上就像这篇文章所说的 - "测量Web应用响应时间:满足客户端"
- 是否有更好的方法?
- 应该期望什么样的性能损耗(数量级)?
- 结果有多好?
我希望监测我们网站的用户体验,并将其与已在服务器端记录的时间信息进行关联。我的假设是需要使用javascript来捕获请求开始时的时间戳(window.onbeforeunload)和加载完成时的时间戳(window.onload)。基本上就像这篇文章所说的 - "测量Web应用响应时间:满足客户端"
为了完整起见,现在一些现代化的浏览器可以使用导航时间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月)广泛支持导航计时技术。
那么使用类似 yslow 这样的东西怎么样?(Firefox 扩展)
我们倾向于使用以下组合:
Firefox: Web Developer Toolbar Firebug YSlow
IE: Fiddler
在所有这些工具中,我发现 YSlow 提供关于如何提高加载时间的最佳信息,但 Fiddler 则提供有关您可以在网络上传输什么样的总体信息,并且甚至可以模拟不同的网络速度。
我对这些方法非常怀疑。其中一些方法比必要的更复杂,我质疑这些数据的准确性。我的做法是让测试人员去各种网络并使用类似Firebug之类的工具:
仅仅为了好玩,这里有一篇最近提交给SOSP的有趣论文,介绍了一个名为AjaxScope的工具。有趣的是,这是由微软研究部门呈现的学术文章,其中展示了Firefox的Javascript实现在某些情况下比Internet Explorer表现出更高的性能。 :)