And*_*lly 5 javascript performance asynchronous loading google-tag-manager
在我们的网站上,我们在关闭正文标记之前的页脚中为第三方服务(如Lotame,Peer39和Google Analytics)提供了脚本标记,以避免阻止页面呈现.我们尽可能地使脚本延迟或异步,但某些服务不能用于异步加载,必须保留为普通标记.我们还向我们的其他分析服务发送了大量关于每个页面内容的数据,这意味着我们也选择在页脚中包含这些数据.
我们现在正在考虑使用Google跟踪代码管理器为我们添加外部脚本.要实施GTM,Google建议您放置代码块
<!-- Google Tag Manager -->
<noscript>
<iframe src="//www.googletagmanager.com/ns.html?id=GTM-XXXXXX"
height="0" width="0" style="display:none;visibility:hidden"></iframe>
</noscript>
<script>(function (w, d, s, l, i) {
w[l] = w[l] || [];
w[l].push({
'gtm.start': new Date().getTime(), event: 'gtm.js'
});
var f = d.getElementsByTagName(s)[0],
j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : '';
j.async = true;
j.src =
'//www.googletagmanager.com/gtm.js?id=' + i + dl;
f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', 'GTM-XXXXXX');</script>
<!-- End Google Tag Manager -->
Run Code Online (Sandbox Code Playgroud)
刚刚开始身体标签之后.这将是GTM开始请求标签的时刻.我理解这个位置是为了避免IE6和IE7的问题.
GTM没有为您提供任何指定脚本加载顺序的方法.我担心,如果我遵循这个建议,我将把一些同步脚本文件的请求从页脚移动到标题,它们安全地偏离主要内容.
我不必要地担心吗?创建第二个GTM容器来管理我的页脚脚本似乎太复杂了.如果我不支持IE7,将GTM代码块放在页脚中是否有意义,因为我的一些脚本当前在标题中?
如果您的第三方服务必须同步,那么最好将它们排除在 Google 跟踪代码管理器之外(来源:是否有 Google 跟踪代码管理器不支持的标记?);这可以。通常,网站测试工具就是这种情况,您实际上需要在页面渲染之前加载内容,否则您会看到闪烁。
此外,GTM 确实提供了标签何时应触发的优先级 - 请参阅我可以优先考虑如何触发标签。
太长了;将所有异步标签放入 GTM 中,并保留同步标签。