【问题标题】:Does GTM really load all tags Asyncronously?GYM 真的异步加载所有标签吗?
【发布时间】:2021-03-13 16:35:32
【问题描述】:

来自their website 的 Google 跟踪代码管理器的一大优势和功能:

异步触发代码,因此它们彼此独立加载,不会减慢您的网页速度。

考虑这种类型的同步标签用法:

<script type="text/javascript" src="www.example.com/third-party-tag.js"></script>
<script type="text/javascript">
   //run some function from third-party-tag.js
</script>

外部js必须同步加载,否则第二个脚本通常会失败。如果您将其直接放入页面 HTML(无 GTM)中,则 js 会同步加载并且第二个脚本可以工作。

如果您将两个脚本标签添加到 GTM 中的一个自定义 HTML 标签中,它仍然可以工作。我可以看到没有添加任何“异步”属性。这怎么可能……

  1. 是不是简单明了的回答:谷歌标签管理器不是 像它声称的那样异步加载外部 js 脚本?
  2. 我是否误解了 GTM 声明的含义?例如检索和 自定义 HTML sn-p (tag) 的准备是异步的,但是 将 HTML 添加到 DOM 后,所有正常规则 适用于这些标签。

感谢您的建议! p.s.将 sn-p 重构为“更好”的方法不在问题的范围内。

【问题讨论】:

    标签: javascript asynchronous google-tag-manager web-performance


    【解决方案1】:

    需要注意的是,仅仅因为一个脚本是异步加载的,它仍然会阻塞主线程。所有 async 所做的只是指示浏览器在下载脚本时不阻止下载其他请求。这是一个很好的解释,

    https://www.digitalocean.com/community/tutorials/html-defer-async

    使用异步,文件被异步下载,然后在下载后立即执行。

    使用 defer,文件被异步下载,但仅在文档解析完成时执行。

    如果可能,我更喜欢“推迟”脚本。

    【讨论】:

    • 谢谢。在我看到的情况下,执行是非常轻量级的,所以它只是脚本下载在可测量的阻塞时间方面是一个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-27
    • 1970-01-01
    • 1970-01-01
    • 2019-11-30
    • 1970-01-01
    • 2014-04-25
    • 2014-09-19
    相关资源
    最近更新 更多