【发布时间】:2012-08-23 15:35:52
【问题描述】:
我正在使用 HTML5 Navigation Timing API 来测量用户在我的网站上感知的页面加载时间。
我正在使用以下代码来测量页面加载时间。
function recordLoadTime () {
/* Process load time using "Navigation Timing" */
if (typeof(window.performance) !== "undefined" && typeof(window.performance.timing) !== "undefined") {
if (window.performance.timing.loadEventEnd > 0) {
var time = window.performance.timing.loadEventEnd - window.performance.timing.navigationStart;
} else {
setTimeout(recordLoadTime, 1000);
}
}
}
time 变量也被添加到 cookie 中,并在用户后续请求中记录在服务器上。
我遇到的问题是记录的时间非常接近当前纪元时间,即 navigationStart 设置为 0 但 loadEventEnd 具有非零值(即当前纪元时间)
我在 Chrome/11.0、Chrome/12.0、MSIE 7.0、MSIE 8.0 和 MSIE 9.0 上看到了这种行为
我通过修改上面的代码暂时解决了这个问题,只在navigationStart大于0时记录加载时间。但我希望记录所有服务页面的加载时间。
【问题讨论】:
-
根据NavigationTiming spec,
navigationStart应该始终为非零。其他任何事情都是错误,应报告给供应商。这可能在最近版本的 Chrome 中已修复,因为它尚未被广泛报道。注意 IE8 没有 NavigationTiming 支持。 -
我知道这已经过时了,但我想你会很高兴知道即使是 Google 也考虑了分析跟踪代码中
navigationStart为 0 的情况。可能说了一些关于供应商支持的事情......
标签: html navigation-timing-api