添加Google Analytics代码的推荐方法是什么?为什么?

时间:2011-01-08 16:06:04

标签: javascript jquery google-analytics

我在许多消息来源中都看到,谷歌推荐的添加GA代码(link)的方法可能会减慢页面加载速度。 StackOverflow本身不会将其放在标题上(如Google建议的那样),而是放在页面底部。

我应该选择Google,StackOverflow,还是应该使用jQuery的getScript?

7 个答案:

答案 0 :(得分:6)

</head>标记之前的

Google Analytics recommends placing the asynchronous摘要。

<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXX-X']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>

在异步语法之前的几天,建议将其放在结束</body>标记之前,以防止页面加载阻塞。这不再是一个严重的问题。

此脚本以阻塞方式执行的唯一操作是它将创建一个简单的JavaScript数组,插入一些基本值,然后执行匿名函数。浏览器将继续并继续加载,而在后台,浏览器将从Google服务器请求ga.js,然后使用跟踪信息向Google的服务器执行__utm.gif请求。

因为这个script is inserted in a non-blocking, asynchronous way,它不会阻止您的内容按时加载。尽早安排它将允许您跟踪更大比例的人,包括那些只在身体的一部分被装载时点击的人。此外,如果您在页面中有事件驱动的跟踪,它可以减少出错的可能性。

此外,由于Google Analytics几乎总是来自两个网址之一(Google的HTTP和HTTPS版本),因此该文件可能基本上缓存在您的用户所拥有的任何浏览器上,这意味着该脚本本身不必转移。

简单地说,如果您将该代码段放在</head>代码的末尾,则可以保证获得最佳结果。

答案 1 :(得分:2)

最好的方法是使用异步分析。 为了跟踪每次点击,下载等...

你可以在这里找到所有的信息: http://code.google.com/apis/analytics/docs/tracking/asyncTracking.html

编辑: 始终遵循谷歌代码建议,这是最好的做法。

答案 2 :(得分:1)

Stack Overflow使用较旧的“传统”版Google跟踪代码,该代码同步运行。 Google recommends此版本紧接</body>之前放置。

您链接到的分页是针对更新后的跟踪代码,该代码以异步方式运行,应放在<head>

因此,您应该在自己网站的<head>中使用Google的最新(异步)代码段。

答案 3 :(得分:1)

我最近发布了一个小型jQuery插件来处理这个问题。它实现了谷歌关于异步跟踪的建议,但带有一点jQuery魔力。你可以找到它:

用于jQuery的微小的,无模糊的异步Google Analytics插件 https://github.com/mekwall/jquery-ga

答案 4 :(得分:1)

<body>

末尾的异步版本

即:

  <script>
   var _gaq = [['_setAccount', 'UA-xxxxxxx-1'], ['_trackPageview']];
   (function(d, t) {
    var g = d.createElement(t),
        s = d.getElementsByTagName(t)[0];
    g.async = true;
    g.src = ('https:' == location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    s.parentNode.insertBefore(g, s);
   })(document, 'script');
  </script>
</body>

答案 5 :(得分:1)

$。getScript,默认情况下会将当前时间戳附加到网址以避免缓存。因此,如果您使用它,应该关闭它。 (打开“缓存”。)

http://blog.yjl.im/2010/09/jquerify-google-analytics-tracking-code.html

这样的事可能有用。它的代码少于谷歌的javascript。

$.ajax(('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js', {dataType: 'script', cache: true})

另请注意,很快就会将其替换为“isogram”通用分析代码。

答案 6 :(得分:0)

如下所述:

https://developers.google.com/analytics/devguides/collection/gajs/#SplitSnippet

如果您的网页加载速度较慢(我当然是这样),您可以将代码拆分为两部分,将第一部分放在&lt; HEAD&gt;

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

和脚下的第二个,正好在&lt; / body&gt;

之上
<script type="text/javascript">
  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
</script>

执行此操作后,我的页面将一如既往地加载。