Google Analytics应该放在HTML页面的头部还是底部?

22

谷歌建议将Google Analytics脚本放在闭合的</head>标签之前。

然而,我更喜欢将其与现在全部打包在缓存的外部文件中的JavaScript结合在一起,并将其加载到HTML文件底部。我能这样做吗?如果可以,那么将下面的代码不放在头部而是放在HTML底部会带来什么风险或成本呢?

<script type="text/javascript">
 var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-22180365-1']);
  _gaq.push(['_setDomainName', 'none']);
  _gaq.push(['_setAllowLinker', true]);
  _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>

1
错过了某些东西 - 000
7个回答

30

你其实并没有冒任何风险。把 <script> 标签放在 <body> 结束标签之前是可取的,因为它所包含的 JavaScript 代码执行时会阻塞页面加载。由于 GA 的 JavaScript 代码是动态插入的,因此是非阻塞的,可以放在任何位置。

我想 Google 唯一担心的问题是,如果将该代码放在网站底部,访问者或页面加载可能在请求完成之前取消。如果有人调用你的 HTML 文档并取消请求,则 GA 代码可能不会被遇到(因此不会被执行)。


6
据看起来,即使在<head>部分使用,Google的跟踪代码片段也是非阻塞的。 - William Denniss
3
这个不再正确。谷歌建议将代码放在结束头标签之前。 - UKDataGeek
6
从Google获取:将您的代码片段(完整且未更改)粘贴到每个要跟踪的网页中。将其紧接着插入在 </head> 结束标签之前。- https://support.google.com/analytics/answer/1008080?hl=zh-Hans - DeBraid

22
您并没有真正冒着任何风险。由于它所包含的Javascript的阻塞性质,建议将 <script> 标签放置在页面末尾...
这简直是不正确的,jAndy。
除非代码位于<head>中,否则您将无法获得某些功能,例如实时报告或Google网站管理员工具验证。异步代码的整个意义在于它可以在页面余下内容加载时加载。将其放置在<head>中不会对用户体验造成任何风险,并且最佳实践是这样做。 来源:Google Analytics支持 @Stratboy 我怀疑是GA代码破坏了布局。一个被正确标记的脚本-特别是像GA这样不显示任何内容的脚本-不会影响布局。建议通过使用W3C进行验证来寻找布局问题的线索。

1
jAndy的评论对于“传统”的脚本包含是正确的,但你是正确的,Google Analytics已经努力使他们的脚本非阻塞,所以这种建议在这种情况下是错误的。 - William Denniss
@Analyticus,“Google站长工具验证”的好处是什么,或者我如何了解更多关于“实时报告”的信息。对于放置在<head>中的原因(在您的链接中找到),谷歌引用的理由对我来说似乎很薄弱:“这增加了跟踪信标在用户离开页面之前发送的可能性。”如果他们在1-2秒内离开页面,我是否真的想要计算他们? - tim peterson
这在很大程度上取决于您的网站。如果您的页面平均需要20秒才能加载(天哪!),那么这肯定会影响您收集数据的方式。对于大多数人来说,实时报告并不是一个很好的时间利用方式。如果有其他实时事件影响您的决策,那么肯定要看一下。然而,我向客户提出的最大警告之一就是不要没有明确的目标进入分析领域。这有点像没有清单去购物:你总会花费比预期更多的(时间)。 - MMMdata

4
从 Google Analytics 设置 说明
将您的代码片段(不变地完整)粘贴到每个要跟踪的网页中。 将其粘贴到关闭 </head> 标签之前。
如果您的网站使用模板生成页面,请在包含 <head> 部分的文件中的关闭标记之前输入它。

1

我同意被接受的答案。我想补充一点,我注意到Google网站管理员工具(GWT)需要跟踪代码(异步版本)在头部才能通过现有的Google Analytics注册为您的站点管理员。因此,如果JS跟踪代码不在中,则无法使用此注册选项。

这可能是Google强迫更多网站这样做的方式。也许Google可以更好地跟踪那些在页面加载期间取消的访问者。这些可能对他们优化搜索结果的分析非常有趣(例如,维护“早期跳出”事件以进行统计)。


0

你可以把它放在</body>之前,我认为这样不会有任何问题。


0

实现代码 一旦找到代码片段,请将其复制并粘贴到您要跟踪的每个页面的</body>标签之前。如果您使用常见的包含或模板,则可以在那里输入它。要为安全页面(例如https://)实现跟踪代码,请阅读如何获取安全页面的跟踪代码?


-1
我将脚本放在body标签结束前的正文部分,但一直显示我的网站缺少跟踪代码分析管理面板,所以我将其移到head部分,现在正常工作了。

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