所以你想构建一个浏览器引擎

主要观点:

  • 若只是为好玩从头构建浏览器引擎,应停止;若要构建有竞争力且在某些方面超越 Chromium 的引擎,给出建议。
    关键信息:
  • 安全和性能要求紧密约束设计,如站点隔离、内容主线程完整性等。
  • 要在多个方面做到极致以提升性能,如页面加载性能、滚动和动画、输入延迟、高质量视频播放等。
  • 可从底层开始并行处理、使用特定编程语言(可能是 Rust)、处理浏览器更新时的状态保存与恢复、构建诊断工具等以超越现有浏览器。
    重要细节:
  • 站点隔离需为每个站点的 JS 提供独立 OS 地址空间,确定沙盒内容进程中的内容及与浏览器其他部分的接口。
  • 内容主线程是瓶颈,应避免其他工作阻塞,现代浏览器引擎有调度主线程活动的启发式方法。
  • 要让 JS-DOM 调用高效,同时实现大量 WebIDL 接口且方便开发者,需处理跨 DOM/JS 边界的 GC 周期。
  • 要最小化页面加载延迟,需预渲染、实现现代 HTTP、使用增量 HTML 解析器等。
  • 滚动和动画要避免因页面 JS 运行而卡顿,通过构建场景图让合成器渲染。
  • 要最小化输入响应延迟,研究整个处理流程。
  • 高质量视频播放要实现相关 API、沙箱化容器解复用等。
  • 可并行处理、用 Rust 编程、处理浏览器更新状态、构建诊断工具等以超越现有浏览器。
阅读 11
0 条评论