我们正常的脚本资源加载时,会堵塞Dom的解析过程,从而导致页面不能及时渲染。
那么下面的几种方式目的就是让脚本加载和执行分离,不要堵塞Dom的渲染过程,当然当脚本执行时,会堵塞Dom的渲染。改变加载方式,使得加载资源和Dom渲染可以并行,不同的加载方式的主要差异就是执行时机。
async-异步
deffer-延迟
deffer 只作用于脚本文件。加载完等浏览器有空了再执行。加载完等浏览器有空了再执行。
defer 加载脚本执行会在所有元素解析完成,DOMContentLoaded 事件触发之前完成执行。它不会打断DOM解析过程。
preload-预加载
preload 可作用于任何静态文件。立即去加载文件,并缓存起来。
prefetch-预请求
prefetch 可作用于任何静态文件。在浏览器空闲的时候去加载文件,并缓存起来。