在目前版本的桌面版 Firefox 中,整个浏览器运行在单个操作系统进程中。尤其是 JavaScript 在同一进程中运行着用户界面(UI,也称 "chrome 代码"),它还搭载着所有网页(也称“内容”,即“标签页”)。
未来版本的 Firefox 将在单独的进程中运行浏览器界面,与网页内容的进程分离。这种架构的第一次迭代是所有浏览器标签页在同一个进程中运行,浏览器界面运行在另一个进程中。在未来的迭代中,我们期望有一个以上的内容进程。提供多进程 Firefox 的项目名为 Electrolysis,有时被简称为 e10s。
普通的网页不会受到多进程 Firefox 的影响。Firefox 本身和 Firefox 附加组件的开发者将受到影响,如果他们的代码依赖于能直接访问 Web 内容。
不同于此前的直接访问内容,chrome JavaScript 将使用消息管理器来访问内容。为了帮助缓解过渡期,我们实现了跨进称对象包装器(CPOW)和一些面向附加组件开发者的兼容性垫片。如果你是一名附加组件开发者并且想知道自己是否受到影响,参见多进程 Firefox 工作指南。
多进程 Firefox 目前在 开发者版本 默认启用。
- 技术概述
- 高等层面看待多进程 Firefox 如何被实现。
- 术语表
- 多进程 Firefox 领域相关的术语参考。
- 消息管理器
- 完整的指南,在 chrome 与内容之间通信的对象。
- 基于 SDK 的附加组件
- 如何迁移使用 Add-on SDK 开发的附加组件。
- 各类 URI 在哪里加载
- 各类 URI 的快速指南:chrome:, about:, file:, resource: - 在哪个进程被加载。
- 动机
- 为什么我们要实现多进程的 Firefox:性能、安全和稳定性。
- 附加组件迁移指南
- 如果你是一名附加组件开发者,看看你的影响,以及如何更新你的代码。
- 跨进称对象包装器(CPOW)
- Cross Process Object Wrappers 是一个迁移辅助,使 chrome 代码能够访问内容。
- 调试内容进程
- 如何调试运行在内容进程中的代码,包括框架和进程脚本。
- 多进程 Firefox 中的标签选择
- 多进程 Firefox 中如何切换标签页。
- chrome 脚本的限制
- 哪些 chrome 代码的做法将不再有效,以及如何解决。
- 框架脚本的限制
- 哪些框架脚本的做法将不再有效,以及如何代替。
联系我们
有关此项目的更多信息、参与或提问。
- Electrolysis 项目页面: https://wiki.mozilla.org/Electrolysis
- IRC: #e10s on irc.mozilla.org
- 邮件列表: dev.tech.electrolysis