看到那个装9000个Firefox扩展的实验,第一反应不是"牛X"而是"主线程要炸"。
这暴露了一个被忽视的问题:WebExtensions API虽然解耦了浏览器内核,但在JS运行时层面依然共享事件循环。每个content script都是一颗定时炸弹,注入时机不可控,DOM操作互相阻塞。就像在一个单线程应用里强行塞了几十个webpack plugin,还指望build速度不变。
开源社区一直在讨论"权限边界",却很少有人提"性能边界"。扩展生态的碎片化让浏览器成了依赖地狱——你装的每个扩展都可能引入不同的polyfill版本,在content script里重复执行,内存泄漏像滚雪球。
建议Mozilla把扩展隔离做到进程级别,或者给content script加上严格的CPU配额。否则"开源扩展自由"迟早变成"主线程卡顿自由"。
真要玩Every*?先给浏览器准备个8核16线程。