解释Google Analytics异步跟踪器

7

我对谷歌的异步分析跟踪器如何工作有疑问。以下代码用于初始化命令数组:

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

现在,这是一个标准数组,在GA代码加载后被替换,并用作一种队列来存储您的点击。
我的困惑在于想知道如果用户点击导致重新加载(在GA javascript被加载之前),这些点击如何可能被保留。如果GA代码没有捕获到对_gaq对象的推送,那么用户点击链接并转到新页面,这个数组就会每次重新初始化,是吗?
一个javascript变量不会跨请求保持持久性,这是不是事实?如果这是情况,那么我们是否失去了导致页面重新加载的原始点击?
非常感谢您的任何解释。
2个回答

5
是的,如果用户在ga.js加载并执行__utm.gif请求发送到Google服务器之前就离开了网站,那么它将无法跟踪_gaq数组,该信息将永远丢失。但是,这个版本的代码仍然比旧的同步代码提供了许多好处。
首先,使用这种方法加载ga.js不会阻塞。
聪明地,通过JavaScript间接注入ga.js的加载,而不是通过硬编码的

修复了链接;它是http://googlecode.blogspot.com/2009/12/google-analytics-launches-asynchronous.html。 - Yahel

2

没错。当页面重新加载时,JavaScript上下文会被丢弃,因此如果用户在ga.js加载之前离开页面,这些点击就会丢失。使用GA的异步版本的优势在于它可以放置在页面的更高位置,这意味着在用户离开之前很可能会先加载ga.js。


好的,内联JS _gaq init代码放置得更高,但他们仍然建议在所有常规JS之后放置实际的ga.js加载。此外,ga.js文件本身的加载不是异步的,因为脚本标记会阻塞,对吧? - brad
他们建议将它放在头部底部的唯一原因是因为Opera尚不支持异步脚本(他们是GA片段不完全异步的唯一浏览器)。 ga.js的加载是完全异步的。异步脚本不像普通脚本那样阻塞。 - Brian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接