3

从阅读来看,异步加载 Google Analytics 似乎主要是一种加速在加载 JavaScript(如 IE6 和 IE7)时阻塞的浏览器的策略。在并行加载 JavaScript 并且通常可以更好地处理 JavaScript 的较新浏览器中,这些好处似乎减少了。

如果我们只考虑“较新的浏览器”(比如 IE8+ 和 1-2 年的 Firefox 和 Chrome 版本),使用异步加载脚本是否还有显着优势?如果是这样,它们是什么?

4

1 回答 1

3

即使现代浏览器已经改进了并行加载和其他性能方面的改进,它们仍然必须遵守两条规则,当你使用简单的脚本标签时,它们会迫使它们做出一些牺牲:

  • 脚本标签可能会“就地”改变 dom。如果您的 js 有document.write()调用,则它必须发生在脚本标记所在的任何位置,而不是在代码执行时浏览器可能正在加载的位置,并且浏览器无法知道您是否在执行它之前有实际的js文件。

    script 标签上的defer属性让浏览器知道您的脚本将不包含任何此类 dom 修改调用,它可以安全地继续加载其他所有内容并在获取时运行 javascript。

  • 脚本标签必须按顺序处理。如果您包含两个脚本(例如,google analytics,然后是 facebook),则在第一个脚本运行之前,您的浏览器不允许运行第二个脚本。换句话说,如果您使用的第三方服务之一速度变慢,则您的整个页面都在等待它。

    async属性与(“我保证我不会尝试就地更改 dom”)具有相同的效果defer,但它也告诉浏览器脚本标签不必在其后面的标签之前运行,浏览器可以只要它想/可以运行它。

    所以在那个例子中,如果你的脚本是异步加载的,它会告诉你的浏览器,如果它在分析之前获取 facebook js 文件,它可以立即运行它而无需等待。

于 2013-08-29T19:14:10.943 回答