请解释关键渲染路径(Critical Rendering Path),以及如何对其进行优化。
关键渲染路径(Critical Rendering Path)是浏览器将 HTML、CSS 和 JavaScript 转换为屏幕上像素所经历的一系列步骤。优化 CRP,就是缩短这个过程的时间,让用户尽快看到有意义的内容。
这个路径始于浏览器接收到 HTML 文档。首先浏览器会先解析 HTML,构建起 DOM 树。在解析过程中,如果遇到 css 链接,会异步下载并构建 cssom 树。这两个过程是并行的,但是当遇到 js 链接时,Html 会等待脚本下载并执行完毕。
优化 CRP 的策略就是“减少阻塞”和“缩短路径”。
比如把 js 标签放在最后,或者只用 defer 属性保证脚本在 HTML 解析完毕后按照顺序执行,asnyc 则保证在下载完毕后继续执行。