Google 跟踪代码管理器包括旧版 Analytics (GA) 和 Universal Analytics (UA) 脚本
Google Tag Manager includes both legacy Analytics (GA) and Universal Analytics (UA) scripts
我正在改进我们的在线商店的性能和加载时间,并且我们在其上使用了 Google 标签管理器。但是包含 google 标签管理器的脚本默认也会加载 Google Analytics(旧版 ga.js
)和 Universal Google Analytics(analytics.js
)。我不需要它们,但如果有必要,我只需要 Universal Google Analytics。
那么为什么 google 标签管理器包括这两个脚本?
作为编码简历,这是标签管理器包含的内容:
<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 标签管理器包括这两个脚本。我可以假设 Universal Google Analytics,但遗留 ga.js
脚本为什么??
我能否避免同时包含或只包含遗留 ga.js
脚本?
谢谢。
编辑
我开始悬赏是因为我需要解释为什么会发生这种情况,以及是否有可能避免这种行为。
GTM 自动加载了这两个脚本。
您在已发布的容器中定义的标签会加载相关脚本,如果之前的标签触发尚未加载该脚本。
例如,第一个标签仅在触发时加载经典 GA,而最后一个标签在触发时加载 UA,并在每次页面加载时触发:
您可以通过将客户端置于预览的调试模式来确定哪些标签实际触发,如果脚本仍然令人费解,您可以导出容器并查看其定义(或自定义 JS)以找到触发的标签与脚本相关:
"tagId": "7",
"name": "classic track event",
"type": "ga",
"tagId": "1",
"name": "page track",
"type": "ua",
据我测试,我最好的假设是它只会加载 ga.js
如果您的容器需要它。
我能找到的唯一情况是当您使用“Google Analytics classic”标签(这是最旧的版本)而不是“Universal Analytics”标签。
我也尝试过创建和使用 dataLayer 变量 v1,但它似乎不需要 ga.js
。
如果您能找到更多案例,请分享它们,因为这实际上非常有趣,即使 GTM 对网站性能几乎没有影响,也需要牢记这一点。
我正在改进我们的在线商店的性能和加载时间,并且我们在其上使用了 Google 标签管理器。但是包含 google 标签管理器的脚本默认也会加载 Google Analytics(旧版 ga.js
)和 Universal Google Analytics(analytics.js
)。我不需要它们,但如果有必要,我只需要 Universal Google Analytics。
那么为什么 google 标签管理器包括这两个脚本?
作为编码简历,这是标签管理器包含的内容:
<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 标签管理器包括这两个脚本。我可以假设 Universal Google Analytics,但遗留 ga.js
脚本为什么??
我能否避免同时包含或只包含遗留 ga.js
脚本?
谢谢。
编辑
我开始悬赏是因为我需要解释为什么会发生这种情况,以及是否有可能避免这种行为。
GTM 自动加载了这两个脚本。
您在已发布的容器中定义的标签会加载相关脚本,如果之前的标签触发尚未加载该脚本。
例如,第一个标签仅在触发时加载经典 GA,而最后一个标签在触发时加载 UA,并在每次页面加载时触发:
您可以通过将客户端置于预览的调试模式来确定哪些标签实际触发,如果脚本仍然令人费解,您可以导出容器并查看其定义(或自定义 JS)以找到触发的标签与脚本相关:
"tagId": "7",
"name": "classic track event",
"type": "ga",
"tagId": "1",
"name": "page track",
"type": "ua",
据我测试,我最好的假设是它只会加载 ga.js
如果您的容器需要它。
我能找到的唯一情况是当您使用“Google Analytics classic”标签(这是最旧的版本)而不是“Universal Analytics”标签。
我也尝试过创建和使用 dataLayer 变量 v1,但它似乎不需要 ga.js
。
如果您能找到更多案例,请分享它们,因为这实际上非常有趣,即使 GTM 对网站性能几乎没有影响,也需要牢记这一点。