我知道piwik、google analytic和其他类似内容的跟踪代码位于页面末尾,不会影响页面呈现.但是还有一个小问题,即页面仍未完成.用户浏览器中的进度指示器仍在循环!如果您使用WebPageTest之类的工具测试您的网页(其中包含跟踪代码),您会发现总体时间是在计算跟踪代码请求(至少2个请求用于JS,另一个请求进行跟踪).
我通过使用window.setTimeout(trackingfunction,3000)进行了简单的延迟.该行执行后三秒钟将触发跟踪代码!当时猜页面已完全完成.这会导致指示器仅在页面加载后停止,并且在调用跟踪代码时不会再次循环.在the tools中,跟踪代码也未显示,并且报告的时间是页面实时的.
它能正确追踪吗?它会跟踪启用了JavaScript的机器人吗?
PS:
我读了this article,他也做些事情来推迟第三方javascript的加载.但我不能确定他的工作是否正确?
解决方法:
将Google Analytics(分析)JS文件的加载推迟到加载事件触发之后才是有利有弊.最终,您决定根据个人站点的需求进行操作.这里没有一个万能的答案.
优点
>页面的加载事件将更快地发生. (如您所述)这意味着微调器不会旋转太长时间,性能分析工具将报告您的页面加载速度更快.
>谷歌(据说)也喜欢加载速度更快的页面,这可能有助于SEO(再次可能).
缺点
>如果用户在页面加载完成之前离开,则Google Analytics(分析)将不会知道他们.如果您有很多用户访问您的网站然后几乎立即离开,则可能是他们这样做的原因,并且如果您不知道正在发生的情况,则无法尝试解决问题.
>与上述类似,如果不计算跳出用户数,则跳出率可能会人为地降低,并且根据跳出率做出的任何业务决策都可能受到影响.
>如果延迟加载,并且对ga()函数有任何引用,则冒着这些调用产生错误的风险.如果您打算至少延迟analytics.js脚本的下载,则应至少在< head>中运行ga()初始化代码.因为它很小,并且对性能的影响可以忽略不计.
>如果页面上有JavaScript错误,它们可能会完全阻止Google Analytics(分析)加载(具体取决于您组织JS的方式). Google Analytics(分析)建议将其摘要放在< head>是为了确保尽快加载它,并避免由于错误而导致无法加载它的问题.
底线:是的,没关系,但是只有在您知道自己在做什么,了解其中的隐含含义,并且意识到了不利因素且不关心它们时,才这样做.
更新资料
Ilya Grigorik写了good article关于< script async>解决您对此的一些担忧.您还应该注意,Google Analytics(分析)的recommended snippet使用< script async>也一样