从阅读开始,似乎异步加载Google Analytics主要是一种加速浏览器加载JavaScript的策略,例如IE6和IE7。在较新的浏览器中,并行加载JavaScript,并且通常更好地处理JavaScript,似乎好处减少了。
如果我们只考虑“新浏览器”(比如IE8 +和1-2岁版本的Firefox和Chrome),使用异步加载脚本还有很大的优势吗?如果是这样,他们是什么?
答案 0 :(得分:3)
即使现代浏览器具有改进的并行加载和其他性能方面的改进,仍然有两条规则要求它们在使用简单的脚本标记时强制做出牺牲:
脚本标签可能会“就地”更改dom。如果你的js有一个document.write()
调用,它必须发生在脚本标记的任何地方,而不是代码执行时浏览器可能在其加载的位置,并且浏览器无法知道你是否在做它是否具有实际的js文件。
脚本标记上的defer
属性让浏览器知道您的脚本不会包含任何此类dom修改调用,它可以安全地继续加载其他所有内容并在任何时候运行javascript它
脚本标记。如果您包含两个脚本(例如,谷歌分析,然后是Facebook),则在第一个脚本运行之前,不允许您的浏览器运行第二个脚本。换句话说,如果您使用的某个第三方服务速度变慢,那么整个页面都在等待它。
async
属性与defer
具有相同的效果(“我保证不会尝试更改dom”),但它也会告诉浏览器脚本标记不会必须在它之后运行,浏览器可以随时运行它。
所以在这个例子中,如果您的脚本是异步加载的,它会告诉您的浏览器,如果它在分析之前获得了facebook js文件,它可以立即运行它而无需等待。