延迟运行跟踪代码好不好
is it good to delay run of tracking code
我知道 piwik, google analytic and other similar stuff, placed at the end of page to not affect page rendering. But there is a minor problem that the page still not complete. The progress indicator in user browser still cycling! If you test your page (which contain tracking code) with tools like WebPageTest 的跟踪代码,您看到总时间计算跟踪代码请求(至少 2 个请求,一个用于 JS,另一个用于跟踪)。
我使用 window.setTimeout(trackingfunction, 3000)
做了一个简单的延迟。跟踪代码将在该行执行后三秒触发!猜测页面到时候就完全搞定了。它导致指示器在页面加载后立即停止,并且在调用跟踪代码时不再循环。在 the tools 中也没有显示跟踪代码,报告的时间是页面实时。
它是否正确跟踪?它是否跟踪启用 javascript 的机器人?
PS:
我读了 this article,他还做了一些事情来推迟第三方 javascript 的加载。但我不能确定他的工作是否正确?
将 Google Analytics JS 文件的加载推迟到 load
事件触发之后,有利也有弊。最终,您决定做什么取决于您个人站点的需求。这里没有放之四海而皆准的答案。
优点
- 您页面的
load
事件会更快发生。这将(如您所提到的)意味着微调器不会旋转那么长时间,并且性能分析工具将报告您的页面加载速度更快。
- Google 也(据说)支持加载速度更快的页面,这可能有助于 SEO(再次,可能)。
缺点
- 如果用户在页面加载完成之前离开,Google Analytics 将不会知道他们。如果你有很多用户访问你的网站然后几乎立即离开,他们这样做可能是有原因的,如果你不知道它正在发生,你就不能尝试解决问题。
- 与上一点类似,如果不计算跳出用户,您的跳出率可能会人为降低,您根据跳出率做出的任何业务决策都可能会受到影响。
- 如果您延迟加载并且您有任何对
ga()
函数的引用,您 运行 将面临这些调用产生错误的风险。如果您要延迟 analytics.js
脚本的下载,至少,您应该 运行 <head>
中的 ga()
初始化代码,因为它非常小且性能影响可以忽略不计。
- 如果页面上有任何 JavaScript 错误,它们可能会阻止 Google 分析加载(取决于您 organize/structure 您 JS 的方式)。 Google Analytics 建议将他们的代码段放在
<head>
中的部分原因是为了确保尽快加载它并避免阻止它加载的错误问题。
底线: 是的,没关系,但只有当你知道自己在做什么,你明白其中的含义,你知道缺点和不关心他们。
更新
Ilya Grigorik 写了一个 good article about how <script async>
address some of your concerns about this. You should also note that Google Analytics has a recommended snippet 也使用了 <script async>
。
我知道 piwik, google analytic and other similar stuff, placed at the end of page to not affect page rendering. But there is a minor problem that the page still not complete. The progress indicator in user browser still cycling! If you test your page (which contain tracking code) with tools like WebPageTest 的跟踪代码,您看到总时间计算跟踪代码请求(至少 2 个请求,一个用于 JS,另一个用于跟踪)。
我使用 window.setTimeout(trackingfunction, 3000)
做了一个简单的延迟。跟踪代码将在该行执行后三秒触发!猜测页面到时候就完全搞定了。它导致指示器在页面加载后立即停止,并且在调用跟踪代码时不再循环。在 the tools 中也没有显示跟踪代码,报告的时间是页面实时。
它是否正确跟踪?它是否跟踪启用 javascript 的机器人?
PS:
我读了 this article,他还做了一些事情来推迟第三方 javascript 的加载。但我不能确定他的工作是否正确?
将 Google Analytics JS 文件的加载推迟到 load
事件触发之后,有利也有弊。最终,您决定做什么取决于您个人站点的需求。这里没有放之四海而皆准的答案。
优点
- 您页面的
load
事件会更快发生。这将(如您所提到的)意味着微调器不会旋转那么长时间,并且性能分析工具将报告您的页面加载速度更快。 - Google 也(据说)支持加载速度更快的页面,这可能有助于 SEO(再次,可能)。
缺点
- 如果用户在页面加载完成之前离开,Google Analytics 将不会知道他们。如果你有很多用户访问你的网站然后几乎立即离开,他们这样做可能是有原因的,如果你不知道它正在发生,你就不能尝试解决问题。
- 与上一点类似,如果不计算跳出用户,您的跳出率可能会人为降低,您根据跳出率做出的任何业务决策都可能会受到影响。
- 如果您延迟加载并且您有任何对
ga()
函数的引用,您 运行 将面临这些调用产生错误的风险。如果您要延迟analytics.js
脚本的下载,至少,您应该 运行<head>
中的ga()
初始化代码,因为它非常小且性能影响可以忽略不计。 - 如果页面上有任何 JavaScript 错误,它们可能会阻止 Google 分析加载(取决于您 organize/structure 您 JS 的方式)。 Google Analytics 建议将他们的代码段放在
<head>
中的部分原因是为了确保尽快加载它并避免阻止它加载的错误问题。
底线: 是的,没关系,但只有当你知道自己在做什么,你明白其中的含义,你知道缺点和不关心他们。
更新
Ilya Grigorik 写了一个 good article about how <script async>
address some of your concerns about this. You should also note that Google Analytics has a recommended snippet 也使用了 <script async>
。