是否可以在本地托管Google跟踪代码管理器的脚本?

时间:2017-08-10 13:48:10

标签: javascript google-analytics google-tag-manager

是否可以在执行服务器上托管由Google Analytics(特别是Tag Manager)生成的脚本,而不是通过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

除了丢失新的标签管理器功能和新生成的标签外,这还有效吗?

1 个答案:

答案 0 :(得分:1)

除了这些标签的开发者之外,没有人可以100%保证回答这个问题。 我将简要介绍除了缺少版本更新之外您可能面临的陷阱

  1. 返回的脚本版本可能取决于您的浏览器。即使是浏览器版本。或者别的什么。这是一种非常有效的技巧,可以最大限度地减少为特定环境提供的代码 - 即,您不需要为现代浏览器返回任何polyfill。或者为慢速移动设备提供更轻的移动设备优化标签。鉴于Google需要提供的流量,可能会使用此类技术。要完全消除这一点,您需要测试您的webapp将支持的所有浏览器中的所有内容。
  2. 您的脚本可能会在任何时候停止工作,恕不另行通知。或者在某些环境中停止工作。根据我推出新版本的经验,我们会提供一段时间的向后兼容性。在脚本所有者确保使用过时版本的流量可以忽略不计之后,它就会被删除。是的,它可能需要很长时间,但仍然 - 你可能迟早会在​​那里,你的团队中的任何人都不太可能跟踪谷歌的公告和发布此类内容。
  3. 目标是避免对外部脚本的任何依赖

    需要考虑的其他一些注意事项:

    • 这些脚本将以异步模式加载=&gt;没有页面渲染阻止
    • 这些脚本可能已经在浏览器的缓存中,因为它们几乎位于互联网上的任何网站上
    • Google的CDN 拥有数十台边缘服务器,即使脚本不在您的缓存中,也可能会很快加载

    最后,如果真的必要,请尽力确保它能在所有可能的环境中使用