16 — Chromium 官方文档提要
这一篇不再罗列文档细节,只保留复习时最有用的官方主题。
线程与任务
核心结论:
- Chrome 关注响应性,UI / IO / Renderer 主线程都不能被长任务阻塞。
- 优先用 task 和 sequence 组织异步逻辑。
- 重任务放到 ThreadPool。
- 跨线程共享状态要谨慎,优先消息传递。
Mojo 与服务化
核心结论:
- Mojo 是 Chromium 的现代 IPC 基础设施。
.mojom定义接口,Remote 调用,Receiver 接收。- Network、GPU、Storage 等服务可以通过 Mojo 跨进程连接。
沙箱
核心结论:
- Renderer 被视为不可信 target。
- Browser 进程作为 broker 管理权限和敏感操作。
- 沙箱依赖 OS 安全机制,目标是限制 Renderer 被攻破后的破坏范围。
cc 与一帧生命周期
核心结论:
- Blink 生成绘制记录,cc 负责光栅和合成准备。
- Pending / Active 树让新内容准备时旧内容仍可显示。
- 一帧通常受 vsync、主线程、光栅、合成和 GPU 提交共同影响。
FrameTree、BFCache、RenderDocument
核心结论:
- FrameTree 描述页面 frame 结构。
- OOPIF 让跨站 iframe 可以跨进程。
- BFCache 让返回页面不必重新解析和执行。
- RenderDocument 倾向让导航创建新的
RenderFrameHost,降低旧文档复用风险。
Network Service
核心结论:
- 网络能力从 Renderer 移到可信服务。
- Browser / Network Service 负责请求策略、安全检查、缓存、Cookie、CORS 等。
- 关键路径要减少不必要的线程和进程跳转。
总结
Chromium 官方文档反复强调几件事:关键线程不能阻塞,Renderer 不可信,跨进程通信要类型安全,渲染要尽量减少主线程依赖,导航和文档生命周期比“打开页面再关闭”复杂得多。