浏览上下文组:如何计算 Chrome 中渲染进程的个数
概述
Chrome 的渲染进程分配遵循站点隔离(Site Isolation)策略。理解浏览上下文组(Browsing Context Group)的概念,可以精确计算 Chrome 为一组页面分配了多少个渲染进程。
1 浏览上下文组
1.1 定义
浏览上下文组(Browsing Context Group) 是一组通过 window.opener、<a target> 或 window.open 相互关联的浏览上下文(标签页/窗口)。同一组内的页面可能共享渲染进程。
1.2 进程分配规则
| 条件 | 进程分配 |
|---|---|
| 不同站点(different-site) | 独立渲染进程 |
| 同一站点(same-site)+ 同一浏览上下文组 | 可能共享渲染进程 |
| 同一站点 + 不同浏览上下文组 | 独立渲染进程 |
1.3 计算示例
code
标签页 A: https://a.com
→ iframe B: https://b.com
→ iframe C: https://sub.a.com
标签页 D: https://a.com(独立打开,非从 A 链接)| 页面 | 站点 | 浏览上下文组 | 渲染进程 |
|---|---|---|---|
| A + C | a.com | 组1 | 进程1(同站点共享) |
| B | b.com | 组1 | 进程2(不同站点独立) |
| D | a.com | 组2 | 进程3(不同组独立) |
渲染进程总数:3
2 Site Isolation 对进程数的影响
2019 年前,Chrome 按标签页分配进程;Site Isolation 后按站点分配:
| 时期 | 分配粒度 | 同标签页跨站 iframe |
|---|---|---|
| 2019 前 | 标签页 | 共享标签页进程 |
| 2019 后 | 站点 | 独立进程(站点隔离) |
站点隔离增加了渲染进程数量,但提供了 Spectre 级安全防护。
3 总结
渲染进程数 = 不同站点数 + 不同浏览上下文组中同站点的页面数。Site Isolation 确保不同站点的 iframe 运行于独立进程,这是现代 Chrome 安全架构的基石。