什么是前端开发的 Critical Rendering Path

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 什么是前端开发的 Critical Rendering Path

Critical Rendering Path 的解析与实例


在 Web 前端开发中,Critical Rendering Path(关键渲染路径)是一个至关重要的概念,它影响着网页的加载速度和性能表现。关键渲染路径指的是浏览器从开始加载网页到网页首次可用的一系列步骤。优化这个过程可以显著提高网页的响应速度和用户体验


理解关键渲染路径

关键渲染路径涉及到多个资源和浏览器的处理过程。这包括 HTML、CSS、JavaScript 文件的下载、解析和执行。这个路径的每一步都是优化的关键点,因为任何延迟都会延长页面的渲染时间。


1.HTML 解析和 DOM 构建

当用户访问一个网站时,浏览器首先加载 HTML 文件。浏览器解析 HTML 文档,创建一个 Document Object ModelDOM)树。这个树结构描述了页面的内容层次和组织结构。DOM 树的构建是逐步进行的:浏览器从上到下解析 HTML 文件,将标签转换成相应的 DOM 节点。


2.CSS 解析和 CSSOM 构建

与 DOM 同时,浏览器还需解析 CSS 文件,构建 CSS Object Model(CSSOM)。CSSOM 与 DOM 类似,是页面样式的一个映射。CSS 规则被解析后,会影响 DOM 树上的元素显示方式。


3.Render Tree 的构建

一旦 DOM 和 CSSOM 都准备好了,浏览器会将它们合并形成一个 Render Tree。Render Tree 只包含需要显示的节点和其样式信息,不包含如 headdisplay: none 的元素。这个树直接决定了页面的布局。


4.布局(Layout)

网页的布局过程开始于 Render Tree 的构建完成。这个阶段,浏览器计算每个元素的准确位置和大小。由于网页是响应式的,这个计算过程需要考虑不同设备的屏幕尺寸和分辨率。


5.绘制(Paint)

布局确定后,浏览器会通过 Paint 过程将每个节点绘制到屏幕上。绘制是指像素层的填充,包括文本颜色、背景图像等视觉效果。


6.合成(Composite)

在某些情况下,页面的部分内容会在单独的层上绘制,然后浏览器将这些层合并显示到屏幕上。这使得页面的某些部分(如动画)可以独立于其他部分变化,提高性能。


优化关键渲染路径的策略

要优化关键渲染路径,关键在于减少影响它的因素。这包括减少资源的大小、优化资源的加载顺序和减少浏览器的工作量。

  • 减少关键资源的数量和大小:通过压缩文件、合并文件,以减少 HTTP 请求次数和传输的数据量。
  • 优化关键资源的加载顺序:利用 asyncdefer 属性,合理安排 JavaScript 脚本的加载时间,确保不会阻塞 DOM 的构建。
  • 利用浏览器缓存:通过缓存策略,使得返回访问者可以立即加载缓存中的资源,而不是重新从服务器请求。
  • 最小化重绘和重排:页面的重


绘(repaint)和重排(reflow)是渲染性能的两大杀手。优化 CSS 和 JavaScript 执行,避免频繁操作 DOM。

实例

假设有一个简单的网页,包含大量的图片和动画效果。对于这种类型的网页,关键渲染路径的优化可以具体包括:

  • 确保 HTML 加载后立即构建 DOM;
  • CSS 应该合并到一个文件中,并通过 <link> 标签放在 <head> 中优先加载,以快速构建 CSSOM;
  • JavaScript 脚本通过 defer 属性加载,不阻塞 HTML 和 CSS 的解析;
  • 图片和其他大型媒体资源应进行懒加载,即仅当这些资源进入视口时再开始加载,以减少初始加载时间。


通过这些方法,可以显著提高网页的加载速度和用户的交互体验。通过细致地管理和优化关键渲染路径,开发者能够创建出响应迅速、用户友好的网页。

相关文章
|
前端开发
前端学习笔记202305学习笔记第二十五天-path路径总讲4
前端学习笔记202305学习笔记第二十五天-path路径总讲4
43 0
|
前端开发
前端学习笔记202305学习笔记第二十五天-path路径总讲2
前端学习笔记202305学习笔记第二十五天-path路径总讲2
42 0
|
前端开发
前端学习笔记202305学习笔记第二十五天-path路径总讲3
前端学习笔记202305学习笔记第二十五天-path路径总讲3
50 0
|
4天前
|
SpringCloudAlibaba JavaScript 前端开发
谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架
分布式组件、nacos注册配置中心、openfegin远程调用、网关gateway、ES6脚本语言规范、vue、elementUI
谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架
|
1月前
|
存储 前端开发 JavaScript
前端语言串讲 | 青训营笔记
前端语言串讲 | 青训营笔记
21 0
|
3月前
|
JSON 前端开发 JavaScript
前端Ajax、Axios和Fetch的用法和区别笔记
前端Ajax、Axios和Fetch的用法和区别笔记
66 2
|
3月前
|
前端开发 JavaScript 数据库
如何实现前后端分离-----前端笔记
如何实现前后端分离-----前端笔记
|
3月前
|
前端开发 安全 NoSQL
技术笔记:Security前端页面配置
技术笔记:Security前端页面配置
|
4月前
|
存储 前端开发 JavaScript
前端笔记_OAuth规则机制下实现个人站点接入qq三方登录
前端笔记_OAuth规则机制下实现个人站点接入qq三方登录
75 1
|
4月前
|
移动开发 前端开发 JavaScript
10款精美的web前端源码的特效,2024年最新面试题+笔记+项目实战
10款精美的web前端源码的特效,2024年最新面试题+笔记+项目实战