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

时间:2011-05-29 05:09:53

标签: javascript html performance html5 google-analytics

Google Analytics网站速度功能_gaq.push(['_trackPageLoadTime'])如何运作?有没有关于它是如何工作的文件?

1 个答案:

答案 0 :(得分:181)

修改:截至2011年11月16日,the _trackPageLoadTime function has been deprecated and its functionality has been set as a default setting。 (从功能上讲,它已经从选择加入功能变为选择退出功能。)

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

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

来自Google Analytics Help Center

  

此报告目前支持   以下浏览器:Chrome,Internet   Explorer 9和以前的版本   与Google的Internet Explorer   工具栏已安装。进一步来说,   站点速度报告需要   支持HTML5的浏览器   NavigationTiming接口还是有的   Google Internet Explorer工具栏   安装

因此,它没有像许多先前的homeback解决方案那样实现自己的计时器,以确定加载页面需要多长时间。相反,它使用新的HTML5功能,目前仅在上面列出的情况下支持,称为NavigationTiming。

编辑:现在Firefox 7

支持此功能

(重要的是要注意它不会在每次加载时运行;相反,它目前会对大约2%的综合浏览量进行采样,但它配置为尝试跟踪所有页面加载的10%访问;随着越来越多的浏览器支持NavigationTiming API,您可以预期总采样百分比开始接近10%。)

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

对于没有缓存的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调用中记录 4.14秒

来自W3C导航时间规范:

  

fetchStart attribute

     

如果新的   使用HTTP获取资源   GET或等价物,fetchStart必须   返回之前的时间   用户代理开始检查任何   相关的应用程序缓存。   否则,它必须返回时间   当用户代理开始提取时   资源。

     

loadEventStart attribute

     

此   属性必须返回时间   紧接着加载事件之前   当前的文件被解雇了。它   load事件时必须返回零   还没被解雇。

对于好奇的派对,排序似乎如下:

  

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

对于列出的0值:

unloadEventStartunloadEventStart显示上一页加载的卸载时间(但仅当该页面与当前页面具有相同的来源时才会显示。)

redirectEndredirectStart衡量在页面加载链中是否存在HTTP重定向时添加的延迟。

secureConnectionStart似乎是衡量SSL连接时间的可选衡量标准。