Skip to content
目录

12 — 关键设计与思考题 ​

这一篇用来把 Chrome 架构串成答案。

为什么拆分 content 和 chrome ​

content 放通用 Web 承载能力,chrome 放 Chrome 产品能力。

这样可以让网页渲染核心更稳定、可复用,也避免扩展、同步、翻译、自动填充等产品逻辑污染底层。

为什么要 Site Isolation ​

不同站点共享同一 Renderer 会增加数据泄露风险。Site Isolation 让站点边界尽量对应进程边界,降低 Renderer 漏洞和 Spectre 类攻击的影响范围。

为什么引入 Mojo ​

Chrome 多进程架构需要大量 IPC。Mojo 用强类型 IDL 和自动生成代码替代手写消息,降低出错概率,也让服务边界更清楚。

为什么 Network Service 进程化 ​

Renderer 不应直接持有网络特权。Network Service 把网络能力放在可信边界内,便于统一做 CORS、Cookie、缓存、代理、安全策略等控制。

为什么 cc 需要 Pending / Active ​

主线程生成的新内容可能还没光栅完成。如果直接上屏,会造成卡顿或半成品显示。

Pending / Active 让旧内容继续可滚动,新内容准备好后再原子切换。

为什么沙箱假设 Renderer 已沦陷 ​

浏览器面对的是不可信网页,解析器、JS 引擎、图片和字体解码都有攻击面。安全设计不能假设 Renderer 永远正确,所以要用沙箱限制它的系统能力。

高频思考题 ​

Browser、Renderer、GPU、Network 各做什么? ​

Browser 管 UI、权限、导航和策略;Renderer 管页面内容;GPU 管图形合成和提交;Network 管网络请求。

Site Isolation 和沙箱有什么区别? ​

Site Isolation 控制哪些站点数据出现在同一进程;沙箱控制进程被攻破后能做什么。

DOM 在 Blink。V8 负责执行 JS,JS 通过 bindings 调用 Blink 的 DOM / Web API 实现。

为什么 IO 线程也不能阻塞? ​

很多 IPC、Mojo 和网络消息依赖 IO 路径,阻塞后会影响跨进程通信和整体响应性。

CompositorFrame 在哪里? ​

Blink 生成绘制内容,cc 组织和光栅后产出 CompositorFrame,viz 负责聚合并提交显示。

总结 ​

Chrome 的关键设计都围绕安全、稳定、性能和可维护性:多进程隔离风险,Site Isolation 隔离站点数据,沙箱限制系统能力,Mojo 支撑服务化,cc/viz 让渲染和合成更流畅。

MIT License.