「内核」到底指什么:两套引擎,一件事
- 渲染引擎(Rendering / Layout Engine)
- 把 HTML、CSS 解析成页面并画到屏幕上。日常说的「浏览器内核」通常指它:Blink、WebKit、Gecko、Trident。
- JavaScript 引擎
- 执行脚本。V8、SpiderMonkey、JavaScriptCore。它与渲染引擎在同一个浏览器里协作,但来源和迭代节奏各自独立。
很多人把「浏览器」和「内核」混着说。准确的关系是: 一个内核可以被很多浏览器使用,一个浏览器也可以在不同时期换内核。Edge 就是最典型的例子——2015 年用自研 EdgeHTML, 2020 年换成 Chromium 的 Blink,名字没变,内核换了。所以判断「两个浏览器是不是同源」,看内核比看品牌可靠。
五大内核谱系:谁从谁分叉出来
今天的浏览器内核其实是两条主线加两条支线:KHTML 分叉出 WebKit,WebKit 再分叉出 Blink(现在的主流); Gecko 独立演进;Trident 与 Presto 已经退场。
| 内核 | 出身 | 代表浏览器 | 现状 |
|---|---|---|---|
| Blink | 2013 年从 WebKit 分叉,Google 主导 | Chrome、Edge、Opera、Brave、Vivaldi、Arc、Chromium;国产 360 / QQ / 夸克 / 搜狗 等多为 Chromium 派生 | 事实标准,份额第一 |
| WebKit | 2001 年由 KHTML 分叉,Apple 主导 | Safari;iOS / iPadOS 上所有浏览器(受平台规则限制) | 移动端份额极高 |
| Gecko | Netscape 时代自研,Mozilla 维护 | Firefox、Tor Browser、Waterfox、Thunderbird | 独立第三极 |
| Trident(MSHTML) | 微软 IE 时代自研 | Internet Explorer 11 及更早 | 2022-06-15 正式退役 |
| EdgeHTML | 微软在 Trident 之上重写 | 旧版 Edge(2015–2020) | 2021-03 停止支持,改用 Blink |
| Presto | Opera 自研 | Opera 12 及更早 | 2013 年转向 Blink |
「分叉(fork)」指拿一份开源代码另起分支独立演进。Blink 分叉后与 WebKit 已渐行渐远,不能视为同一内核。
一次页面打开,内核做了什么
从按下回车到看见像素,渲染引擎要做六件事。理解这条链路,排障时才知道该看哪一层:白屏多是网络或解析,闪烁多是布局,卡顿多是绘制与合成。
| 阶段 | 做了什么 | 出问题时的典型症状 |
|---|---|---|
| ① 解析 HTML → DOM | 把标签流转成节点树;遇到脚本可能暂停解析 | 白屏、内容顺序错乱、脚本阻塞首屏 |
| ② 解析 CSS → CSSOM | 样式表变成规则树;外链 CSS 会阻塞首帧渲染 | 无样式闪烁(FOUC)、首屏变慢 |
| ③ 合成渲染树 | DOM + CSSOM → 只含可见节点的渲染树 | 元素该显示却没显示(display:none 的误用) |
| ④ 布局 / 回流(Layout / Reflow) | 计算每个盒子的位置与尺寸 | 页面抖动、CLS 差、图片没有宽高导致跳动 |
| ⑤ 绘制(Paint) | 把盒子画成图层上的像素 | 文字发虚、边框错位、阴影裁切 |
| ⑥ 合成(Composite) | GPU 把图层叠成最终画面 | 滚动卡顿、动画掉帧 |
transform / opacity——它们可以只走合成层。JavaScript 引擎:另一条并行的技术线
JS 引擎负责把脚本编译成机器码并执行。它和渲染引擎通过绑定层(binding)通信——DOM 操作本质上就是跨层调用, 所以「少碰 DOM、批量改样式」这类优化建议才成立。
| JS 引擎 | 所属内核 / 产品 | 特点 |
|---|---|---|
| V8 | Blink(Chrome、Edge、Opera…) | 即时编译(JIT)成熟,生态最大;Node.js 也用它 |
| SpiderMonkey | Gecko(Firefox) | 最早的 JS 引擎之一,近年强化 Wasm 与并发 GC |
| JavaScriptCore(Nitro) | WebKit(Safari) | Apple 优化,移动端能效表现好 |
| Chakra | 旧 Edge(EdgeHTML 时期) | 已随 EdgeHTML 退场 |
同一个内核可以换 JS 引擎,反之亦然。讨论「跑分快不快」时,JS 引擎的影响往往比渲染引擎更直接。
多进程架构:为什么一个标签页崩了浏览器不倒
现代浏览器不是单个进程。Chromium 系把职责拆成几个角色,崩溃隔离与安全沙箱都建立在这个模型上。
- Browser 进程(主进程)
- 管窗口、地址栏、书签、下载、权限——唯一有「全局视野」的角色。它挂掉整窗都会关。
- Renderer 进程(渲染进程)
- 每个站点(Site Isolation 下甚至每个跨站 iframe)一个,跑 Blink + V8,被沙箱限制到最小权限。
- GPU 进程
- 负责合成与光栅化;崩溃时通常表现为页面黑块,刷新即恢复。
- Network 服务
- 统一处理网络请求、Cookie、缓存,避免每个渲染进程各自直连网络。
国产「双核浏览器」是怎么回事
360、QQ、搜狗等国产浏览器长期宣传「双核」:一个 Chromium 核跑现代网页,一个 IE 核(Trident)应付只兼容 IE 的老系统—— 网上银行、政务系统、老 OA 是主要场景。
- IE 内核已于 2022-06-15 随 IE11 退役,双核里的「IE 模式」现在是各家用自有方案模拟兼容,不再等于微软支持。
- Chromium 核也不是原封不动:厂商会加自己的壳(皮肤、工具栏、内置下载器、去广告),版本往往落后官方数个里程碑。
- 判断某国产浏览器真实内核,最省事的办法是打开
chrome://version——能打开且显示 Chromium 版本号,基本就是 Chromium 系。
内核版本、Evergreen 与「你用的到底是哪一版」
Chromium 系采用「常青(Evergreen)」更新:内核版本大约每 4 周推进一个里程碑,浏览器自动升级。 这意味着同一个浏览器品牌,不同人的内核版本可能差好几个月,网页兼容问题的第一现场往往在这里。
| 想查什么 | 怎么做 |
|---|---|
| Chrome / Edge / Opera / Brave / Vivaldi / Arc 等 Chromium 系 | 地址栏输入 chrome://version,看第一行版本号与「Blink」 |
| Firefox / Waterfox / Tor Browser | 地址栏输入 about:support,看「版本」与「Gecko 版本」 |
| Safari | 菜单「Safari 浏览器 → 关于 Safari」,或 about:blank 页面看版本 |
| 在网页里用脚本判断 | navigator.userAgentData(新)或 navigator.userAgent(老,仅作兜底) |
UA 字符串会互相「伪装」:Chrome 的 UA 里含 Safari 字样,Edge 的 UA 里含 Chrome 字样。靠 UA 判断内核很容易错,优先用 userAgentData.brands 或直接特性检测。
内核与网页兼容性:怎么不被内核差异坑
同一份 HTML,在不同内核上的结果可以差很多。可控的做法不是「兼容所有浏览器的一切」,而是分层处理:
- 先做特性检测,再写分支:
if ('showOpenFilePicker' in window)比判断品牌稳。 - CSS 用 @supports,不要用浏览器前缀猜;前缀已经是历史遗留手段。
- 查支持度:caniuse、MDN 的兼容表是事实标准来源;新 API 先做渐进增强,别当唯一路径。
- 固定内核版本做回归:企业内网常有「锁版本」的浏览器,测试矩阵里要留一格。
份额与趋势:为什么「兼容 Blink + WebKit」就覆盖了大多数
下面这张图来自 Wikimedia Commons 对浏览器使用份额的长期统计。它解释了一个现实:桌面与移动加起来, Blink 系与 WebKit 系吃掉了绝大多数流量,Gecko 是稳定的第三极,Trident 已归零。

五个常见误解
| 说法 | 实情 |
|---|---|
| 「内核越多越好」 | 多内核意味着多套渲染路径与更大的攻击面;双核是历史包袱的折中,不是先进设计。 |
| 「GPU 加速一定更快」 | 合成与光栅化走 GPU 通常更快,但纹理上传、图层过多反而更慢;要看具体场景。 |
| 「Chromium 就是 Chrome」 | Chromium 是开源项目,Chrome 是 Google 在其上加品牌、同步与专有组件的发行版。 |
| 「UA 写着 Safari 就是 Safari」 | Chrome、Edge、国产 Chromium 浏览器的 UA 里都带 Safari 字样(历史兼容),不能据此判断。 |
| 「换内核就能解决卡顿」 | 卡顿多半来自页面本身(脚本、布局、资源体积)与设备,内核只决定上限,不负责优化你的页面。 |
判断浏览器能力,永远优先看「它支持哪些特性」,而不是「它叫什么名字」。
延伸阅读
常见问题
为什么同一个网页在不同浏览器上排版不一样?
Edge 换了 Blink,和我用 Chrome 有什么区别?
手机上的浏览器内核和电脑一样吗?
内核版本落后会有什么实际风险?
怎么判断一个陌生的国产浏览器是不是 Chromium 套壳?
chrome://version、扩展是否兼容 Chrome 扩展、开发者工具的界面是否与 Chrome DevTools 同构。三条都成立,基本就是 Chromium 派生。