延迟运行跟踪代码是否有好处?

3
我知道如何追踪piwikgoogle analytic和其他类似的东西,将其放置在页面末尾以不影响页面呈现。但是有一个小问题,页面仍然没有完成。用户浏览器中的进度指示器仍在循环!如果您使用WebPageTest等工具测试包含跟踪代码的页面,则会看到总时间计算跟踪代码请求(至少有两个请求,一个用于JS,另一个用于跟踪)。
我使用window.setTimeout(trackingfunction, 3000)进行简单延迟。执行该行后,三秒钟后将启动跟踪代码!猜测此时页面已完全完成。这导致指示器在页面加载后停止,并且在调用跟踪代码时不再循环。在工具中,跟踪代码也不会显示,并且报告的时间是页面实际时间。
这样是否正确地跟踪?是否跟踪启用了JavaScript的机器人?

PS:
我阅读了这篇文章,他也做了一些延迟加载第三方JavaScript的工作。但我无法决定他的工作是否正确?


事实是:为什么要测量与真实用户体验不同的东西?用户仍然必须加载脚本,无论是否延迟。 - Alfabravo
我说指示灯在循环,用户需要等待!如果跟踪服务服务器承受压力,可能需要额外的几秒钟来完成页面加载,而且几乎所有的跟踪服务都需要进行一次DNS查找,因为它们是在不同的域上提供服务。因此,用户会对这个缓慢的网站感到疲倦。 - wtayyeb
1个回答

5

将 Google Analytics JS 文件的加载推迟到 load 事件触发之后有利有弊。最终,你决定采取何种方式取决于你个人站点的需求。这里没有一种适合所有情况的答案。

优点

  • 你的页面的 load 事件会更快地发生。这意味着(如你所提到的),旋转器不会持续旋转那么久,性能分析工具会报告你的页面加载速度更快。
  • Google 也(据说)更喜欢加载更快的页面,这可能有助于 SEO(同样也可能)。

缺点

  • 如果用户在页面加载完成之前离开,Google Analytics 将不会知道他们的存在。如果您有很多用户进入您的网站然后几乎立即离开,可能有一个原因导致这种情况发生,如果您不知道正在发生什么,就无法尝试解决问题。
  • 与上述观点类似,如果反弹用户没有被计算,您的跳出率可能人为地降低,您基于跳出率做出的任何业务决策都可能受到影响。
  • 如果您延迟加载并且有任何对 ga() 函数的引用,那么您可能会面临这些调用生成错误的风险。如果您要延迟下载 analytics.js 脚本,至少应该在 <head> 中运行 ga() 初始化代码,因为它非常小,其性能影响将是可以忽略不计的。
  • 如果页面上有任何 JavaScript 错误,它们可能会完全阻止 Google Analytics 的加载(取决于您如何组织/结构 JS)。Google Analytics 建议将其片段放在 <head> 中的部分原因是确保它尽快加载,避免错误阻止其加载的问题。
底线: 是的,可以这样做,但只有当你知道自己在做什么,了解其影响并且不关心其缺点时才可以这样做。

更新

Ilya Grigorik写了一篇好文章,介绍了<script async>如何解决您对此的一些担忧。您还应该注意,Google Analytics有一个推荐的代码段也使用了<script async>


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