能否在本地托管Google标签管理器的脚本?

16

是否可以将由Google Analytics生成的脚本,特别是标签管理器,托管在执行服务器上,而不是通过Google的脚本块从客户端获取?

目标是避免对外部脚本的依赖。

我知道Google不建议本地托管分析或标签管理器,但是否可能这样做?

据我了解,标签管理器的工作方式是通过嵌入本地脚本来实现的,如下所示:

<!-- Google Tag Manager -->
<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','YOUR-GTM-CODE');</script>
<!-- End Google Tag Manager -->

当客户端执行此操作时,它会获取一个新生成的脚本(https://www.googletagmanager.com/gtm.js?id=YOUR-CODE),其中包含编辑器自上次发布以来添加到容器中的任何新标签或触发器。请注意:请勿写出解释性内容,仅翻译。

enter image description here

除了失去新的标签管理器功能和新生成的标签,这个还能用吗?

是的,这个解决方案可以工作。但是如果你不更新脚本,它将限制你使用所有GTM功能的能力。 - mrbubu
我可能会建议 不要 尝试使用您自己本地托管的版本。通过保持特定静态版本,您将使自己容易受到与该版本的 gtm.js 相关的任何可能的安全漏洞的攻击。如果您不信任 Google 提供安全的 JavaScript,则可以考虑使用其他分析提供程序。 - mootrichard
1个回答

6
除了这些标签的开发者,没有人可以百分之百地回答这个问题。我将列出您可能会遇到的问题,除了错过版本更新之外。
1. 脚本版本可能取决于您的浏览器,甚至是浏览器版本等等。这是一种非常有效的技巧,可以最小化为特定环境提供的代码 - 即您不需要为现代浏览器返回任何polyfill。或者为慢速移动设备提供更轻量级的移动优化标签。考虑到谷歌需要服务的流量数量,很可能会使用这种技术。要完全消除这种情况,您需要在您的webapp将支持的所有浏览器中测试所有内容。
2. 您的脚本可能随时停止工作且没有事先通知。或在某些环境中停止工作。从我的经验来看,当新版本推出时,会提供向后兼容性一段时间。在脚本所有者确保使用过时版本的流量数量可忽略不计之后,它就会被删除。是的,可能需要很长时间,但您很可能会早晚到达那里,不太可能有任何人在您的团队追踪Google关于这些事情的公告和发布。
目标是避免对外部脚本的任何依赖关系。
还有一些需要考虑的注意事项:
- 这些脚本应以异步模式加载,不会阻止页面渲染 - 这些脚本很可能已经在您的浏览器缓存中,因为它们几乎存在于互联网上的任何站点上 - Google的CDN有数十个边缘服务器,即使脚本不在您的缓存中,也很可能会非常快地加载
最后,如果这确实是必要的,请尽力确保它可以在所有可能的环境中工作。

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