news 2026/1/12 15:40:31

从Chromium架构看浏览器执行机制

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从Chromium架构看浏览器执行机制

下文基于最新 Chromium 架构(2024–2025)+ WHATWG 事件循环规范。

现代浏览器进程模型(Chromium Site Isolation 架构)

​现代浏览器是多进程架构,每个 Render Process (渲染进程)中有多个线程(主线程、合成线程、raster(光珊化) 线程等)。​Chrome 至少包含:

Renderer 进程内部线程模型

Renderer 内部不是单线程,而是一个复杂的​多线程渲染系统​:

“JS 只在 Renderer 主线程执行(通过事件循环处理 Task 和 Job),渲染管线(style→layout→paint→composite)会在(compositor/GPU 线程)协作:主线程生成绘制命令 → 合成线程处理 → raster 线程光栅化 → GPU 合成。”

事件循环

老说法:宏任务 / 微任务

这只适合 JS 引擎,不符合浏览器标准。

新标准(WHATWG)

浏览器遵循:

  • Task(原来所谓“宏任务”)
  • Microtask/Job(微任务)

但注意,浏览器将 Task 分为多个不同的 Task Queue:

最新循环模型(Chrome / WHATWG)

while (true) { 执行一个 Task (浏览器任务队列) 执行所有 Microtask(Job Queue) 如果需要更新渲染,则提交给 Compositor(触发渲染管线) }

渲染原理

浏览器把源码(HTML/CSS/JS)解析成 DOM + CSSOM → 构建 Render Tree → 计算样式 → 布局(layout) → 分层 → 绘制(paint) → 分块 → 光珊化(raster) → GPU 显示(draw)。

概览

从页面加载到屏幕显示,主要阶段:

  1. 网络加载资源​(HTML/CSS/JS/图片/字体等)
  2. HTML 解析 → DOM 树
  3. CSS 解析 → CSSOM(样式表树)
  4. ​**构建 Render Tree(渲染树)**​(DOM + CSSOM 的结合,只有可见节点)
  5. 样式计算(Style Recalculation)—— 将 CSS 应用到节点上
  6. 布局(Layout / Reflow)—— 计算每个节点的尺寸和位置(回流)
  7. 分层—— 一些特殊的属性,会创建一个新的合成层,新的图层可以使用 GPU 进行加速(流媒体)。
  8. 绘制(Paint)—— 为每个节点生成绘制指令(绘制图层、颜色、边框、文本、阴影等),分发到图层,并由合并线程接管。
  9. 分块 ​​—— 对每个图层进行分块,将其划分为更多的小区域。
  10. 光珊化(Rstar)—— 矢量绘制命令被 raster 线程或 GPU 转换为像素纹理(tile)。
  11. 呈现到屏幕(swap buffers)

关键点:​很多步骤在主线程完成(尤其是 JS、样式、布局、paint 指令生成)——这是最常见的性能瓶颈​。浏览器尽量把可并行的工作(raster、composite、GPU)移出主线程。

详细步骤

1 资源加载与阻塞

浏览器拿到 HTML 开始​流式解析​,遇到<link rel="stylesheet">会下载并解析 CSS,因为 CSS 会影响后续节点的样式(所以 CSS 会阻塞渲染直到下载并解析)——这是“render-blocking resource”。

<script>默认会阻塞 HTML 解析(因为脚本可能会修改 DOM/CSSOM)。可以用defer(在解析结束后执行)或async(下载完成立即执行,不阻塞后续资源下载但会阻塞解析执行)来优化。

fonts、images 不一定阻塞结构渲染,但字体会影响文本重绘(FOIT/FOUT 问题)。

优化点:把非关键 CSS 异步加载,使用preload/prefetch,把脚本defer或放底部。

2 HTML → DOM

解析器(parser)按字符流构造 DOM 节点树(节点类型:元素、文本、注释等)。

DOM 是页面的语义结构。

3 CSS → CSSOM

CSS 样式表被解析成 CSSOM,包含规则、选择器、优先级。

嵌入样式和外链样式都合并成一个样式树。

4 DOM + CSSOM → Render Tree(渲染树)

渲染树只包含可见的节点(display: none 的节点不会进入)。

每个渲染对象(render object)关联计算后的样式(颜色、大小、布局属性等)。

5 样式计算(Style Recalculation)

浏览器把 CSSOM 中的样式匹配到 DOM 节点,计算出​计算后样式​(computed style)。

这是一个开销可能很大的过程,受选择器复杂度、DOM 节点数量影响。

6 布局(Layout / Reflow)

布局阶段计算每个 render object 的几何信息(宽高、位置)。

Layout 代价高,尤其是当某节点的尺寸变化需要重新计算大量子树或祖先树时(回流 cascade / reflow propagation)。

常见触发:修改宽高、添加/删除 DOM 节点、改变字体、改变视口大小等。

7 分层(Layering)

浏览器会根据某些属性,把渲染树分成若干合成层(compositing layers),常见触发:position: fixed/absolutetransformopacitywill-changevideo/canvas等。

8 绘制(Paint)

paint 会将合成层中每个节点的可视属性转换成绘制指令(例如绘制背景色、边框、文本、阴影、图像等)。

paint 的输出通常是绘制到图层(layer)或画布命令(display lists)。重复 paint 会浪费资源。

9 合成(Compositing)

合成层可以被单独 rasterize(光栅化成位图)并交给 GPU 合成,从而避免整个页面重绘。

合成阶段在合成线程/ GPU 进行,能在主线程被占用时仍保持某些动画或滚动流畅。

10 分块(Tiles)

合成线程首先对每个图层进行分块,将其划分为更多的小区域。

11 Rasterization(光栅化)

矢量绘制命令被 raster 线程或 GPU 转换为像素纹理(tile),多线程或 GPU 并行处理这些 tiles。

12 最终合成与显示(Draw)

合成线程把多个图层纹理合成(blend)出一帧,送到 GPU 显示(swap buffers)。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/27 6:20:21

5分钟解锁AI 3D建模新境界:让飞船设计像搭积木一样简单

还在为复杂的3D建模软件头疼&#xff1f;AI智能参数调优的时代已经到来&#xff01;本文将带你用最轻松的方式&#xff0c;体验AI辅助3D建模的神奇魅力。无需任何专业背景&#xff0c;只要会说话&#xff0c;就能创作出惊艳的科幻飞船。&#x1f680; 【免费下载链接】Spaceshi…

作者头像 李华
网站建设 2026/1/12 8:44:57

WebAccess监控exe程序:如何平衡安全与员工隐私?

要确保公司网络的安全与合规&#xff0c;对员工电脑上运行的程序进行监控是常见的管理措施。WebAccess类软件常被用于远程监控&#xff0c;其核心功能之一就是记录和分析终端上.exe文件的执行情况。这种做法在提升安全性的同时&#xff0c;也带来了关于隐私与效率的平衡问题。 …

作者头像 李华
网站建设 2025/12/25 7:47:51

JS正则验证QQ邮箱格式,5-11位数字核心规则详解

处理用户输入时&#xff0c;验证邮箱格式是常见的需求&#xff0c;QQ邮箱有其特定规则。在JavaScript中&#xff0c;通过正则表达式进行匹配是一种高效、可靠的方法。掌握其核心规则和编写方式&#xff0c;能有效提升表单验证的准确性和代码质量。 QQ邮箱的命名规则是什么 QQ邮…

作者头像 李华
网站建设 2025/12/25 11:46:59

HeyGem.ai视频生成终极解决方案:3步告别99%卡顿难题

HeyGem.ai视频生成终极解决方案&#xff1a;3步告别99%卡顿难题 【免费下载链接】HeyGem.ai 项目地址: https://gitcode.com/GitHub_Trending/he/HeyGem.ai 你是否曾在深夜加班时&#xff0c;眼睁睁看着视频生成进度卡在99%却无能为力&#xff1f;&#x1f62b; 这个困…

作者头像 李华
网站建设 2025/12/25 16:07:35

微服务架构的AI测试策略

在当今数字化转型浪潮中&#xff0c;微服务架构以其灵活性、可扩展性和独立部署性&#xff0c;已成为企业构建复杂应用的主流选择。然而&#xff0c;这种分布式系统架构也为软件测试带来了新的挑战&#xff0c;尤其是在人工智能&#xff08;AI&#xff09;组件日益集成的背景下…

作者头像 李华
网站建设 2025/12/25 10:32:03

JRiver Media Center(媒体管理软件)

JRiver Media Center是一款全能的多媒体播放器&#xff0c;可以播放音乐、视频、图片、电视等多种媒体文件。同时它还具备完善的管理和组织功能&#xff0c;能够帮助用户将多种类型的媒体文件整合到一个软件中进行统一管理。 软件功能 1.多媒体播放&#xff1a;JRiver Media C…

作者头像 李华