待办 — dynamic-scraper.ts Map 慢泄漏¶
来源¶
v0.10.44 独立 audit agent 复审时发现("可疑点 S2")。优先级低,记下不立即修。
内容¶
src/utils/dynamic-scraper.ts:13-35 注册 webNavigation.onCompleted +
webNavigation.onErrorOccurred 监听 <all_urls>,对每个用户浏览器
main_frame 导航写入 Map(tabStatus、tabError),但 tab 关闭时无
browser.tabs.onRemoved 清理。
长期使用累积条目(普通用户每天浏览数百 tab)。
影响评估¶
| 维度 | 评估 |
|---|---|
| 每条 entry 大小 | (number, number) 极小(< 100 字节) |
| 累积速度 | 每个新 tab + 1 条 |
| 1 个月累积量 | 假设每天 200 tab → 6000 条 ≈ 600 KB |
| SW kill 频率 | MV3 SW 闲置会 kill,kill 后 Map 重置 → 自动清零 |
| 实际危害 | 几乎可忽略(SW kill 已变相清理) |
紧迫度:低¶
因为 MV3 SW 经常被 kill,Map 实际不会无限增长。但严格意义上是泄漏,应该修。
修法(未来做)¶
browser.tabs.onRemoved.addListener((tabId) => {
tabStatus.delete(tabId);
tabError.delete(tabId);
});
评估时机¶
- 用户反馈"扩展用一段时间后变卡" → 立即处理
- 否则下次 background 大改动时顺手修