Mozilla Firefox从48版开始向用户推送e10s功能,
如果条件允许的话,部分用户的Fx会自动启用e10s(多处理程序)的功能。
目前e10s默认是启用二个处理程序,一个是firefox.exe,负责处理浏览器本体框架,
另一个是plugin-container.exe,负责处理所有分页的网页内容。
如果有启用外挂程式,例如Flash,还会再看到一个plugin-container.exe,
负责处理Flash外挂程式。
所以默认可能会看到三个处理程序,一个firefox.exe,二个plugin-container.exe。
将来处理网页内容的程序应该会改名,例如改成web-content.exe,
不再使用plugin-container.exe的名称,以避免混淆。
检查Fx是否已启用e10s
在网址列输入about:support
如果已启用e10s,“多程序视窗”这个项目会显示1/1 (开启)
如果你的Fx没有自动启用e10s,可以自己强制开启
在网址列输入about:config
新增布林值browser.tabs.remote.force-enable,设为true
dom.ipc.processCount(处理网页内容的程序数目)默认是1,
数字越大plugin-container.exe就越多,内存也吃越多。
据官方说法开启e10s后内存使用量大约会增加20%,
不过整体接口的反应速度会比较快,使用上感觉可能会比较顺畅。
不过如果我们自行修改dom.ipc.processCount的默认值,
可能会发生e10s开启新分页比non-e10s还缓慢的现象。
这个现象在新分页的标签文字上特别明显,
本来non-e10s开新分页,新分页标签上的文字“连线中...”会很快显示出来,
而e10s开新分页,标签则会持续空白一段时间,
大约延迟0.1秒以后才会显示出“连线中...”的文字。
这是因为如果dom.ipc.processCount的数值大于已开启分页,
譬如说dom.ipc.processCount设为2,而已开启分页只有1个,
当新增第2个分页时,Fx就会创建一个新的处理程序plugin-container.exe,
来处理分页2的内容,这个创建新处理程序的过程造成了延迟。
当dom.ipc.processCount的数值小于已开启分页,
譬如说dom.ipc.processCount设为2,而已开启分页已经有2个,
当新增第3个分页时,Fx就会使用已存在的处理程序plugin-container.exe,
来处理分页3的内容,而不会再创建新的处理程序,
因此不会发生标签文字显示延迟的现象。
所以目前dom.ipc.processCount的默认值只有设为1。
而自行修改这个数值改得很大,同时习惯开启分页数量较少的人,
每次开新分页,Fx就会创建新程序,这时就会遇到这个显示延迟的现象。
如果我们希望改善这个现象,可以在about:config底下新增一个布林值
dom.ipc.processPrelaunch.enabled 设为 true
让Fx启用“预先配置新处理程序”的功能,这样就可以避免开新分页延迟的问题。