preload.png

我们正常的脚本资源加载时,会堵塞Dom的解析过程,从而导致页面不能及时渲染。
那么下面的几种方式目的就是让脚本加载和执行分离,不要堵塞Dom的渲染过程,当然当脚本执行时,会堵塞Dom的渲染。改变加载方式,使得加载资源和Dom渲染可以并行,不同的加载方式的主要差异就是执行时机。

async-异步

async 只作用于脚本文件。脚本加载完立即执行

deffer-延迟

deffer 只作用于脚本文件。加载完等浏览器有空了再执行。加载完等浏览器有空了再执行。
defer 加载脚本执行会在所有元素解析完成,DOMContentLoaded 事件触发之前完成执行。它不会打断DOM解析过程。

preload-预加载

preload 可作用于任何静态文件。立即去加载文件,并缓存起来。

prefetch-预请求

prefetch 可作用于任何静态文件。在浏览器空闲的时候去加载文件,并缓存起来。

参考

使用 Preload/Prefetch 优化你的应用