考察点:DOM 树构建、渲染阻塞、首屏速度
关键渲染路径是指浏览器从接收 HTML、CSS 和 JS 字节开始,到最终将像素渲染到屏幕上的整个过程。HTML 在这个过程中扮演着‘骨架’的角色。
浏览器解析 HTML 生成 DOM 树。如果我们在 <head> 中引入了大量的同步 CSS 或 JS,就会阻塞这个过程。
具体来说:
- HTML 解析遇到
<link rel="stylesheet">,会构建 CSSOM,这会阻塞渲染,但不会阻塞 DOM 解析(除非后面有 JS)。 - HTML 解析遇到
<script>(无 defer/async),会暂停 DOM 解析,去下载并执行 JS。因为 JS 可能会修改 DOM,所以浏览器必须等待。
为了优化首屏加载(FCP/LCP),我会采取以下策略:
- 将非关键 CSS 异步加载或内联关键 CSS。
- 将 JS 脚本加上
defer或放在 body 底部。 - 使用
preload预加载关键字体或图片。 - 尽量减少 DOM 节点的深度和数量,加快 DOM 树的构建速度。