解释Google Analytics异步跟踪器

时间:2010-09-20 18:34:18

标签: javascript google-analytics

我知道google的异步分析跟踪器是如何工作的。以下代码用于初始化命令数组:

<script type="text/javascript">
  var _gaq = _gaq || [];
  _gaq.push(
    ['_setAccount', 'UA-xxxxxxxx-x'],
    ['_trackPageview']
  );
</script>

现在,这是一个标准数组,在加载GA代码后会被替换,并用作存储点击的一种队列。

我的困惑在于想知道如果用户点击导致重新加载的链接(在加载GA javascript之前),这些点击可能会如何持续存在。如果GA代码没有捕获到_gaq对象的那个推送,那么用户点击一个链接并转到一个新页面,这个数组每次都没有重新初始化?

对于导致刷新的请求,javascript变量不会持久存在吗?如果是这种情况,那么我们是否丢失了导致页面重新加载的原始点击?

非常感谢任何解释。

2 个答案:

答案 0 :(得分:5)

是的,你是对的,如果用户在ga.js加载之前点击了网站,并且已经向Google的服务器执行了__utm.gif请求,那么它将不会跟踪_gaq数组并且该信息将永远消失。但是这个版本代码仍然比旧的同步代码提供了许多好处。

首先,使用此方法加载ga.js 阻止。

巧妙的是,ga.js的加载是通过JavaScript间接注入的,而不是通过硬编码的<script>标记。根据{{​​3}},

  

片段的后半部分   提供加载的逻辑   跟踪代码与其他人并行   页面上的脚本。它执行一个   动态的匿名函数   创建一个元素和集合   具有适当协议的来源。   因此,大多数浏览器都会加载   跟踪代码并行   因此,页面上的其他脚本   减少网页加载时间。

这意味着对于大多数现代浏览器来说,ga.js的加载以非阻塞方式发生(并且作为一个好处,async =“true”部分,当前在Google Code Blog中支持正式化此异步)。这可以温和地减少加载时间,并且可以轻微降低ga.js加载前发生点击的可能性。

提前排队_gaq阵列的好处是防止竞争条件;之前,如果您在加载ga.js之前尝试进行GA调用(例如,事件跟踪视频播放),则会抛出错误并且事件调用将丢失且永远无法恢复。这样,只要ga.js最终加载,_gaq数组就可以在加载时为所有调用提供服务。

答案 1 :(得分:2)

是的。 Javascript上下文在页面重新加载时被丢弃,因此如果用户在加载ga.js之前离开页面,则这些命中将丢失。 GA的异步版本的优点是它可以在页面中放得更高,这意味着在用户离开之前加载ga.js的可能性更大。