我知道 piwik 的跟踪代码, google analytic和其他类似的东西,放在页面末尾不影响页面渲染。但是有一个小问题,页面还没有完成。用户浏览器中的进度指示器仍在循环!如果您使用 WebPageTest 等工具测试您的页面(其中包含跟踪代码)你看到总时间是计算跟踪代码请求(至少 2 个请求,一个用于 JS,另一个用于跟踪)。
我使用 window.setTimeout(trackingfunction, 3000)
做了一个简单的延迟。跟踪代码将在该行执行后三秒触发!猜测页面到时候就完全搞定了。它导致指示器在页面加载后立即停止,并且在调用跟踪代码时不再循环。在 the tools跟踪代码也未显示,报告时间是页面实时时间。
它是否正确跟踪?它会跟踪启用 javascript 的机器人吗?
附言:
我读了this article ,他还做了一些事情来推迟第三方 javascript 的加载。但我不能确定他的工作是否正确?
最佳答案
将 Google Analytics JS 文件的加载延迟到 load
之后有利有弊。事件触发。最终,您决定做什么取决于您个人站点的需求。这里没有放之四海而皆准的答案。
优点
load
您页面的事件会发生得更快。这将(如您所提到的)意味着微调器旋转的时间不会那么长,并且性能分析工具将报告您的页面加载速度更快。- Google 也(据推测)偏爱加载速度更快的页面,这可能有助于 SEO(再次,可能)。
缺点
- 如果用户在页面加载完成之前离开,Google Analytics 将不会知道他们。如果你有很多用户访问你的网站然后几乎立即离开,他们这样做可能是有原因的,如果你不知道它正在发生,你就不能尝试解决问题。
- 与上一点类似,如果不计算跳出用户,您的跳出率可能会人为降低,并且您根据跳出率做出的任何业务决策都可能会受到影响。
- 如果您延迟加载并且您有任何对
ga()
的引用功能,你冒着这些调用产生错误的风险。如果您要延迟下载analytics.js
脚本,至少,您应该运行ga()
<head>
中的初始化代码因为它非常小,对性能的影响可以忽略不计。 - 如果页面上有任何 JavaScript 错误,它们可能会完全阻止 Google Analytics(分析)加载(取决于您组织/构建 JS 的方式)。 Google Analytics 建议将其代码段放在
<head>
中的部分原因是为了确保它尽快加载并避免错误导致无法加载的问题。
底线:是的,没关系,但只有当您知道自己在做什么、理解其含义、意识到缺点并且不关心时才这样做他们。
更新
Ilya Grigorik 写了一个 good article关于如何<script async>
解决您对此的一些担忧。您还应该注意到 Google Analytics 有一个 recommended snippet使用<script async>
关于javascript - 延迟运行跟踪代码好吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32170678/