_gaq.push()如何工作?

Google Analytics网站速度function_gaq.push(['_trackPageLoadTime'])工作? 有没有关于它如何工作的文档?

编辑 :截至2011年11月16日, _trackPageLoadTime函数已被弃用,其function已被设置为默认设置 。 (从function上说,它已经从一个select退出function变成退出function。)

_setSiteSpeedSampleRate是用于设置此function的采样率的新function; 其默认值是1 (如1%)。 要select不使用Site Speedfunction,必须将0传递给此function:

 _gaq.push(["_setSiteSpeedSampleRate", 0]); 

来自Google Analytics帮助中心 :

此报告目前支持以下浏览器:Chrome浏览器,Internet Explorer 9以及安装了Google工具栏的Internet Explorer以前版本。 更具体地说,“网站速度”报告要求使用支持HTML5 NavigationTiming界面的浏览器,或者安装Google Internet Explorer工具栏

因此,它不像许多先前的回传解决scheme那样实现自己的计时器,以便计算加载页面需要多长时间。 相反,它使用了一个新的HTML5function,目前仅在上面列出的情况下才支持,名为NavigationTiming。

编辑 :现在在Firefox 7中支持

(需要注意的是,它不会在每一次加载时都运行;相反,它目前大约占浏览量的2%,尽pipe它被configuration为跟踪10%访问量的所有页面加载;随着更多的浏览器支持NavigationTiming API,你可以预期总采样百分比开始接近10%。)

这个接口在DOM对象window.performance (或者在Chrome的早期版本, window.webkitPerformance )下使用timing属性(如window.performance.timing )进行访问。 对象存储所有关键页面加载事件时间的测量值,Google Analytics(分析)会减去2个更重要的外部值来判断页面加载速度。

对于没有caching的Mashable.com负载,下面是一个例子(在Chrome 11中):

 timing = { connectEnd: 1306677079337, connectStart: 1306677079337, domComplete: 1306677083482, domContentLoadedEventEnd: 1306677081765, domContentLoadedEventStart: 1306677081576, domInteractive: 1306677081576, domLoading: 1306677079478, domainLookupEnd: 1306677079337, domainLookupStart: 1306677079337, fetchStart: 1306677079337, loadEventEnd: 1306677083483, loadEventStart: 1306677083482, navigationStart: 1306677079337, redirectEnd: 0, redirectStart: 0, requestStart: 1306677079394, responseEnd: 1306677079669, responseStart: 1306677079476, secureConnectionStart: 0, unloadEventEnd: 0, unloadEventStart: 0 } 

这些数字是1970年1月1日以来的纪元毫秒或毫秒。我还没有看到任何文件,他们减去哪些值来产生它们的值,但从粗略的检查ga.js ,它看起来像是loadEventStart-fetchStart

 h&&h[c]!=k&&h.isValidLoadTime?b=h[c]:e&&e[a]&&(b=e[a].loadEventStart-e[a].fetchStart); 

对于上面的示例,这意味着它将在_trackPageLoadTime调用中logging4.14秒

从W3C导航时序规范:

fetchStart属性

如果要使用HTTP GET或等价的方式获取新资源,则fetchStart必须在用户代理开始检查任何相关应用程序caching之前立即返回时间。 否则,它必须返回用户代理开始获取资源的时间。

loadEventStart属性

此属性必须返回当前文档的加载事件触发之前的时间。 当负载事件尚未被触发时,它必须返回零。

对于好奇的派对来说,sorting如下:

connectStart connectEnd domainLookupStart domainLookupEnd fetchStart navigationStart requestStart responseStart domLoading responseEnd domContentLoadedEventStart domInteractive domContentLoadedEventEnd domComplete loadEventStart loadEventEnd

对于列出的0值:

unloadEventStartunloadEventStart显示上一次页面加载的卸载时间(但只有当该页面与当前页面具有相同的原点时)。

redirectEndredirectStart测量页面加载链中是否存在HTTPredirect时添加的延迟。

secureConnectionStart似乎是测量SSL连接时间的可选测量。