_gaq.push(['_ trackPageLoadTime'])如何工作?


102

Google Analytics(分析)网站速度功能如何_gaq.push(['_trackPageLoadTime'])运作?是否有有关其工作方式的文档?


2
@ stuken.yuri是Google Analytics(分析)异步调用的语法。它的基本含义是:将功能(名称)添加_trackPageLoadTime到队列中,然后在ga.js加载后依次触发该队列中的所有功能。它允许您安全地ga.js异步加载。
Yahel 2011年

Answers:


181

编辑:自2011年11月16日起,_trackPageLoadTime功能已弃用,其功能已设置为默认设置。(从功能上讲,它已从“选择加入”功能变为“选择退出”功能。)

_setSiteSpeedSampleRate是用于在此功能上设置采样率的新功能;其默认值为1(以1%为单位)。要选择不使用此站点速度功能,您必须将a传递0给此功能:

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

Google Analytics(分析)帮助中心

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

因此,它没有实现自己的计时器,就像许多以前的Homeback解决方案一样,它无法确定页面加载需要多长时间。取而代之的是,它使用了新的HTML5功能,目前仅在上述情况下才受支持,称为NavigationTiming。

编辑:现在支持 Firefox 7

(需要注意的是,它并非在每次加载时都运行;相反,尽管它已配置为尝试在10%的访问中跟踪所有页面的负载;随着越来越多的浏览器支持NavigationTiming API,您可以预期总采样百分比将开始接近10%。)

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

对于没有缓存的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);

对于上面的示例,这意味着它将在呼叫中记录4.14秒_trackPageLoadTime

根据W3C导航时序规范:

fetchStart属性

如果要使用HTTP GET或等效方法来获取新资源,则fetchStart必须立即返回时间,用户代理必须立即开始检查所有相关的应用程序缓存。否则,它必须返回用户代理开始获取资源的时间。

loadEventStart属性

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

对于好奇的当事人,排序似乎如下:

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

对于列出的0个值:

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

redirectEndredirectStart衡量在页面加载链中是否存在HTTP重定向的情况下增加的延迟。

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


6
你这个家伙,认真。感谢您如此详尽的回应。
Sid

secureConnectionStart是一种标准的措施,但对于浏览器(或处理内容的任何内容)进行报告是可选的。 w3c-test.org/webperf/specs/NavigationTiming/…–
Eric
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.