是否可以通过 Google 的脚本 block 在执行服务器上托管由 Google Analytics(尤其是跟踪代码管理器)生成的脚本,而不是在客户端获取它们?
目标是避免对外部脚本的任何依赖。
我知道 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 ),其中包含您的编辑器自上次发布以来添加到容器中的任何新标签或触发器。
除了失去新的标签管理器功能和新生成的标签外,这还能用吗?
最佳答案
除了这些标签的开发者之外,没有人可以 100% 保证地回答这个问题。 我将概述您可能会遇到的陷阱,除了缺少版本更新。
- 返回的脚本版本可能取决于您的浏览器。即使在您的浏览器版本上。或者其他什么。这是一个非常有效的技巧,可以最大限度地减少为特定环境提供的代码——也就是说,你不需要为现代浏览器返回任何 polyfill。或者为速度较慢的移动设备提供更轻量级的移动优化标签。考虑到谷歌需要服务的流量,很可能会使用这种技术。要完全消除这种情况,您需要在您的网络应用将支持的所有浏览器中测试所有内容。
- 您的脚本可能随时停止运行,恕不另行通知。或者停止在某些环境中工作。根据我的经验,推出新版本时会提供一段时间的向后兼容性。在脚本所有者确保使用过时版本的流量可以忽略不计后,它就被删除了。是的,这可能需要很长时间,但仍然 - 您迟早会到达那里,您团队中的任何人都不太可能跟踪 Google 就此类事情发布的公告和发布。
目标是避免对外部脚本的任何依赖
需要考虑的更多注意事项:
- 这些脚本将以异步模式加载 => 无页面呈现阻塞
- 这些脚本可能已经在您的浏览器缓存中,因为它们几乎存在于 Internet 上的任何站点上
- Google 的 CDN 有许多边缘服务器,即使脚本不在您的缓存中,也可能会很快加载
最后,如果这真的有必要,请尽力确保它能在所有可能的环境中工作
关于javascript - 是否可以在本地托管 Google 跟踪代码管理器脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45615612/