谷歌分析设置说明状态:
此跟踪代码段应包含在您网站的页面中,以便它出现在页面 HTML(或生成的 HTML)结构的底部,在结束 <body> 标记之前。
他们的代码片段是否需要此位置才能完全发挥作用,或者 Google 是否建议这样做仅仅是因为它提高了页面加载性能以在底部放置脚本?
谷歌分析设置说明状态:
此跟踪代码段应包含在您网站的页面中,以便它出现在页面 HTML(或生成的 HTML)结构的底部,在结束 <body> 标记之前。
他们的代码片段是否需要此位置才能完全发挥作用,或者 Google 是否建议这样做仅仅是因为它提高了页面加载性能以在底部放置脚本?
这只是为了提高页面加载性能。如果此代码位于开头,那么如果由于某种原因分析代码运行缓慢,则页面的其余部分将等待它完成或在加载前超时。
分析代码可能会对 Google 的服务器进行查询,因此他们必须等待服务器响应才能完成。如果(上帝保佑)谷歌的网络服务器被备份或滞后,这将严重影响您网站的加载时间。
有一篇关于Better Google Analytics JavaScript 的文章不会阻止页面下载。请参阅相关的如何动态加载 Google Analytics JavaScript?关于SO的问题,也是。
我发现有时谷歌提供的代码可能会由于客户端延迟而导致页面加载延迟。通过将它放在源代码的底部,它不会导致浏览器停止并等待 javascript 完成,然后再继续页面呈现。
将 Analytics 代码移动到您的 domready / onload 函数中以获得最佳性能结果。
来自YSlow 指南
脚本引起的问题是它们会阻止并行下载。HTTP/1.1 规范建议浏览器每个主机名并行下载不超过两个组件。如果您从多个主机名提供图像,则可以同时进行两次以上的下载。但是,在下载脚本时,浏览器不会启动任何其他下载,即使在不同的主机名上也是如此。
在某些情况下,将脚本移到底部并不容易。例如,如果脚本使用 document.write 插入部分页面内容,则不能将其移至页面下方。也可能存在范围问题。在许多情况下,有一些方法可以解决这些情况。
经常出现的另一种建议是使用延迟脚本。DEFER 属性指示脚本不包含 document.write,并且是浏览器可以继续呈现的线索。不幸的是,Firefox 不支持 DEFER 属性。在 Internet Explorer 中,脚本可能会被延迟,但不会像期望的那样延迟。如果可以推迟脚本,也可以将其移至页面底部。这将使您的网页加载速度更快。
昨天有个同事问我这个问题。我想这与执行脚本之前加载的整个文档有关。
如果加载了更多文档,则脚本可以处理更多文档。
我相当肯定它只是为了页面性能。当然,这可以通过页面最初加载所有内容时不需要的任何 javascript 库/片段来完成。
底部的标记过去只是为了尽量减少跟踪脚本对网站行为的可能影响:优先考虑的是拥有一个功能性网站,一旦它工作,就对其进行跟踪。您可能不会跟踪所有页面浏览量,但这对最终用户来说不太重要。
异步语法解决了可靠性和性能问题,同时保持部署简单。
它位于 HEAD 部分的末尾。