为什么谷歌建议在你的html中的分析异步跟踪代码之前放入js脚本? http://code.google.com/apis/analytics/docs/tracking/asyncMigrationExamples.html
这是引用:
“注意:为了确保异步代码段相对于其他脚本的最简化操作,我们建议您通过以下方式之一在站点中放置其他脚本: 在HTML“
部分中的跟踪代码段之前
答案 0 :(得分:4)
异步分析代码片段的工作是加载一个更密集的脚本,检查用户的浏览器是否有各种信息来识别它们,以便它可以向分析服务器报告。但是,由于所有这些分析数据对于页面的可用性并不重要,因此Google希望在浏览器方便的情况下运行它。
理论上,他们可以建议程序员将异步片段添加到页面的最底部,作为正文的最后一个元素。但是,为了允许程序员捕获要发送到分析的UI事件,他们希望尽早使用_gaq
变量。例如,您可能有一个按钮:<button onclick="_gaq.push(...)">Track</button>
。通过尽早提供_gaq
,异步代码段中的一小部分代码将对这些消息进行排队,而较重的ga.js
将在以后将它们发送到服务器。
现在,通过向文档头添加新的ga.js
元素并加载<script>
属性,可以加载一些implementation details:async
。 IE和WebKit将异步加载从脚本插入的<script>
标记。 Firefox和Opera将尊重async
属性并异步加载脚本。无论哪种方式,ga.js
都是异步加载的,方便浏览器。
最后,执行ga.js
后,不会因异步加载而阻止页面呈现,它可以完成收集所有用户数据和_gaq
队列中的任何消息的繁重工作。将它们发送到服务器。
摘要:此方法使用一个小型内联脚本来初始化一些关键变量,例如_gaq
,您的页面可以在完整的ga.js
脚本准备好之前访问这些变量。这个小脚本还动态地为文档添加<script src="ga.js">
标记,大多数浏览器都会异步下载和执行它,而不会阻止页面的呈现或关键脚本的评估。
答案 1 :(得分:2)
当浏览器加载页面时,它从上到下执行此操作。浏览器具有有限数量的“连接”,可用于加载外部链接的文档。如果您将其脚本放在您的脚本之上,则在您的脚本完成之前可能不会加载您自己的脚本。分析代码对页面的功能并不重要,因此我们可以将其保存到最后。