Firefox,启用,“新架构”,速度成倍提升[Firefox]?

2024-02-23 生活百科 By:运维技巧
导读声明:本文来自于微信公众号OSC开源社区(ID:oschina2013),授权转载发布。 曾几何时,浏览器比现在简单得多。浏览器就是一个单一的操作系统进程,所有的一切都发生在一个进程中。这对于使用 Accessibility Tree(无

声明:本文来自于微信公众号OSC开源社区(ID:oschina2013),授权转载发布。

曾几何时,浏览器比现在简单得多。浏览器就是一个单一的操作系统进程,所有的一切都发生在一个进程中。这对于使用 Accessibility Tree(无障碍树)来获取有关用户界面和 Web 内容的辅助技术而言,获取信息的方式也更加简单高效。

不过随着使用量和复杂性的增加,安全漏洞的风险也随之增加。为了提高性能、稳定性和安全性,浏览器开始将不同的网页转移到不同的进程中。而且为了进一步提高安全性,如今的浏览器还会将 Web 内容进程置于沙盒中,进一步减少了访问权限。这意味着辅助技术相比以往更加难以访问包含无障碍树的 Web 内容进程,也不能向该进程注入代码,无障碍环境的情况变得十分复杂。

Firefox 浏览器的无障碍引擎(Accessibility Engine)负责为屏幕阅读器等辅助技术提供它们访问网页内容所需的信息。这些工具需要与浏览器交互,并对用户或有关网站的变化作出反应。如果浏览器因为缓慢或其他问题而出现过多的延迟,那么使用 Firefox 访问网络上的内容反而会成为一种拖累。

虽然现有的无障碍引擎架构为 Firefox 提供了良好的服务,但在目前的架构下,Firefox 团队无法进一步提高速度,而且现有的无障碍引擎过于复杂、难以维护,并且有严重的稳定性问题,以及需要在不同的操作系统上采用不同的实现。Firefox 团队决定重构无障碍引擎,因此 "Cache the World" 项目应运而生。

这个项目的目标就是让 Firefox 在与屏幕阅读器和其他辅助技术一起使用时更快,特别是在 Windows 上。根据官方给出的数字(下表提供了在重构之前和之后的时间对比),新架构下 Firefox 在多个场景测试中,速度都有了显著提升。

例如,从收件箱中打开一封 Gmail 邮件,现在需要100毫秒,而以前需要200毫秒。同样,关闭 Gmail 邮件并返回收件箱在新架构下需要150毫秒,而在旧架构下需要410毫秒。

在加载大型文件、表格和其他内容时,所取得的成果更加令人印象深刻。对一个大文件的测试,此次性能提升能够将用时从175秒提高到仅需15秒。在另一个对有超过12000行的表格页面进行测试时,加载速度从原本的128秒提高到6秒。

在新的架构中,Firefox 异步地将无障碍树从每个 Web 内容进程推送到主 UI 进程。当辅助技术查询无障碍树时,所有的查询都从缓存中得到响应,而不需要在 Firefox 进程之间进行任何调用。当一个页面更新时,内容进程异步地将缓存更新推送到主进程。速度的提高远远超出了 Firefox 团队的预期,而且与旧的架构不同,如今他们可以完全控制缓冲区的更新方式和时间,因此还有很大的空间来进一步提高 Firefox 的性能。至于代码维护,一旦完全发布,将能够删除大约20000行代码,其中大部分是操作系统特有的。

新的架构已经在 Firefox Nightly 中启用了。如果一切顺利,Mozilla 计划在2023年1月的 Firefox110测试版中为 Windows 和 Linux 用户启用这一功能。在此之后将在 Firefox111或112版本中分阶段向 Windows 和 Linux 用户正式推出这一功能。而 Mac 版本还需要更多开发时间,因此会晚一些上线。

相关链接:https://www.jantrid.net/2022/12/22/Cache-the-World/

展开全文
猜你感兴趣
干挂面面条该怎么做焖面呢?

干挂面面条该怎么做焖面呢?

1、食材:干面条、豆角少量、香菇、油2匙、盐10克、料

03-23 0万阅读
银耳泡发要多久呢?

银耳泡发要多久呢?

银耳的冷水泡发时间为3-4个小时,才能让银耳慢慢吸水,

03-23 0万阅读
牛油果口感呢?

牛油果口感呢?

牛油果的味道很独特,牛油果果肉很柔软,吃起来像乳酪

03-23 0万阅读
绿豆沙冰该怎么做呢?

绿豆沙冰该怎么做呢?

1、准备食材:绿豆50g、白砂糖适量。 2、绿豆用清水洗

03-23 0万阅读
正宗蒜蓉酱制作方法呢?

正宗蒜蓉酱制作方法呢?

1、食材:蒜300克、油30克、盐2克、蔬菜精1克。 2、干

03-22 0万阅读
竹叶青和雀舌的区别呢?

竹叶青和雀舌的区别呢?

1、产地不同:竹叶青产于四川省峨眉山一带。雀舌茶产于

03-22 0万阅读
什么是活珠子鸡蛋呢?

什么是活珠子鸡蛋呢?

活珠子是南京的特产,属金陵小吃,是当鸡蛋即将孵成一

03-22 0万阅读
蚕该怎么吐丝呢?

蚕该怎么吐丝呢?

1、蚕宝宝会变得安静,不再吃桑叶,身体开始变得发亮。

03-22 0万阅读
厚切酸奶该怎么做成的呢?

厚切酸奶该怎么做成的呢?

厚切酸奶是依靠快速制冰的原理,将酸奶凝固成块状或者

03-22 0万阅读
牛油果没熟能不能吃呢?

牛油果没熟能不能吃呢?

牛油果没熟可以吃,但未熟透的牛油果口感不太好,吃起

03-22 0万阅读