uBlock Origin 会增加页面载入时的开销吗? - fang5566/uBlock GitHub Wiki

太长不看版: 如果你担心 uBO 会增加非臃肿站点载入时的开销,只要针对单个站点禁止修饰规则生效就可以了,这是最好的办法:它在最大程度减少开销的同时还可以保护你的安全和隐私(根据你开启的规则列表和规则)。


是的,uBlock Origin(“uBO”)会增加页面载入时的开销。任何内容过滤工具都不可能不增加 CPU 或内存开销。

然而,对于现如今大多数网页,所有被屏蔽的资源都不消耗 CPU 和内存,反而多倍回报了这些额外开销。

好比将增加的开销看成是一项投资:你希望通过你的投资获得最佳回报,而这里的资金就是你的 CPU 和内存开销。

内容过滤工具的职责就是代表用户最大程度减少投入的资金,以便在更低点得到全部回报,这也是为了尽快开始从投资中获利 -- 最大程度减少开销保证了你能获得最佳回报。

这就是说,对于那些 uBO 认为不需要或只需稍加屏蔽的网页(从现在开始称之为“简洁的站点”),你的投资得不到任何回报,即投入的 CPU 和内存开销都变成了净亏损 -- 这又是一个内容过滤工具为何要尽最大努力减少开销的原因。其中一个最小化“损失”的办法,是在这类内容过滤工具认为没必要屏蔽的简洁站点禁用 uBO。另一方面,很显然这类站点的“损失”通常是比较小的,所以增加的开销真不是一个问题。

其实,禁用 uBO 避免增加额外开销属于用户的主观判断,它得考虑诸多因素,例如:

  • 对于投入的开销,我们不能只考虑它在 CPU 和内存方面的回报,知道你的过滤工具正在保护你,它所带来的内心平和也同样是种回报。一个简洁的网站也不能保证在任何时候都保持简洁,或不会被劫持用来投放不良内容。
  • 如果你使用的是中等模式,那禁用 uBO 就更没什么意义了,因为该模式通常是用来保护你免受 CSRF 的影响。

另外还有一种办法,让你在禁用 uBO 后避免减少开销的同时牺牲安全或隐私:只需针对简洁的站点禁止修饰规则生效 -- 这么做既减少了大量开销,又可以很好地保护到你,因为网络过滤还是完全启用的,而修饰过滤正如它的名字,没有任何保护方面的价值。

如果你对 uBO 给网页带来的额外开销感到好奇,你可以使用这个页面载入速度工具(不支持禁止使用内嵌帧框架的页面),来比较启用 uBO 前后,或 uBO 不同设置下的页面载入速度。

下面这个例子显示的是 uBO 在打开一个简洁站点里的普通大体积网页时增加的开销:

平均值
完全启用 uBO 537.63 毫秒
启用 uBO,禁用修饰规则 488.23 毫秒
禁用 uBO 488.41 毫秒
未安装过滤工具 474.77 毫秒

当然,在不那么简洁的站点进行这项测试是没用的,因为使用过滤工具时这类网页载入速度肯定会更快,但想必你还是想测试一下不同过滤工具在相近设置下的表现。

结论: 如果你担心 uBO 会在它认为没必要屏蔽的简洁站点增加额外的开销,最好的办法是禁用修饰过滤规则,它既保护了你的安全又保护了你的隐私。