装了很多脚本后浏览器变卡:Tampermonkey 性能优化
「装了油猴之后浏览器变卡」是官方 FAQ Q401 正面回答过的问题。根因在 iframe 注入机制:Tampermonkey 需要进入每个页面(包括各种 iframe)检查是否有脚本要跑,命中脚本多的环境开销随之放大。
为什么会卡
- 每个页面、每个 iframe 都要过一遍「有没有脚本命中我」的判断;
- 声明
@include http://*、@include https://*这类全站通配的脚本,会在每个标签页、每一帧、每个广告 iframe 里执行——官方原文点名这类脚本,并说管理面板会用地球图标在 sites 列标注它们; - iframe 越多的页面(嵌广告、嵌评论组件的页面),判断次数越多。
官方给的优化方向
- 少装全站通配脚本:
@match *://*/*或@include https://*的脚本优先级最低,能用窄匹配替代的就替代; - 识别高开销脚本:管理面板里看 sites 列的地球图标标注,逐个评估是否真的需要;
- 不要用「全局包含」:官方明确建议避免 No global includes 之外的全局注入习惯;
- 配置不跑社交按钮区:官方 FAQ 提到可以在选项里让 Tampermonkey 不在社交按钮等无关 iframe 里运行(设置页相关区项,以实际版本为准)。
用户侧的自查流程
- 管理面板通览脚本列表,找出通配全站的那几个;
- 弹出菜单里逐个停用,观察卡顿变化,定位元凶(见菜单启停脚本);
- 元凶脚本:找替代脚本(匹配更窄的同类)或干脆弃用;
- 剩下的真全站脚本保留,接受其开销。
其他开销点
- 脚本数量:上百个脚本时列表操作也变慢,用标签分类圈出活跃组,其余停用;
- 存储膨胀:个别脚本往存储里写大数据,编辑器 Storage 标签可以查看体量(见存储数据查看);
- 后台日志:Debug 级别开着会增加输出负担,排查完记得关(见调试日志)。
与其他性能问题区分
- 只有特定页面卡:多半是那个页面的脚本冲突,按页排查;
- 扩展整体响应慢、列表都卡:考虑数据问题或版本问题,参考数据库被清空的备份思路先保数据。