我在网上商店提供更好的性能和加载时间,我们在其上使用Google跟踪代码管理器。但默认情况下,包含Google代码管理器的脚本还会加载Google Analytics(旧版ga.js
)和Universal Google Analytics(analytics.js
)。我不需要这两者,但如果有必要,我只需要通用Google Analytics。
那么为什么谷歌标签管理器包括这两个脚本?
作为编码简历,这是标签管理员包含:
<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=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXX');</script>
-
在网络选项卡上,它显示包含,然后它会自动加载两个脚本:
-
如果我分析Google跟踪代码管理器脚本(gtm.js
),我会看到以下内容:
else if (!a) {
var N = c["60"] ? ".google-analytics.com/u/ga_debug.js" : ".google-analytics.com/ga.js";
a = !0;
u(x("https://ssl", "http://www", N, r), O, c["66"])
}
而且:
if (!a) {
var M = b["60"] ? "u/analytics_debug.js" : "analytics.js";
b[""] && !b["60"] && (M = "internal/" + M);
a = !0;
bb(x("https:", "http:", "//www.google-analytics.com/" + M, d && d.forceSSL), function() {
var a = $a();
a && a.loaded ||
b["66"]();
}, b["66"])
}
-
所以google标记管理器包含两个脚本。我可以假设通用Google Analytics,但遗留ga.js
脚本为什么?
我可以避免同时包含旧版ga.js
脚本吗?
谢谢。
我开始获得赏金,因为我需要解释为什么会发生这种情况,以及是否有可能避免这种行为。
答案 0 :(得分:6)
GTM自动加载这些脚本。
您已发布的容器中定义的标记会加载相关脚本,以便在之前的标记触发时不会加载它。
例如,第一个标签仅在触发时加载经典GA,而最后一个标签在触发时加载UA并在每次页面加载时触发:
您可以通过将客户端置于预览的调试模式来确定您的哪些标签实际触发,如果脚本仍然令人费解,您可以导出容器并查看其定义(或自定义JS)以查找与脚本相关的标签:
"tagId": "7",
"name": "classic track event",
"type": "ga",
"tagId": "1",
"name": "page track",
"type": "ua",
答案 1 :(得分:3)
据我测试,我最好的假设是,如果你的容器需要它,它只会加载ga.js
。
我能找到的唯一案例是当您使用“ Google Analytics经典”标记(最旧版本)而不是“通用分析”时标签。
我也尝试过创建和使用dataLayer变量v1,但似乎不需要ga.js
。
如果您能找到更多案例,请分享,因为这实际上非常有趣,即使GTM对网站性能几乎没有影响,也应该考虑到这一点。