11中优先级问题与建议
22
3- 1 . DNR 资源类型与匹配范围
3+ 1 . SW 日志与 i18n 加载顺序
44
55- 现状:
6- - 规则 ` condition.urlFilter: "*" ` ,` resourceTypes ` 包含大量类型。
7- - 影响:
8- - 接受所有 URL 类型的匹配,虽 DNR 性能尚可,但无谓扩大范围;也可能影响到“非必要请求类型”的 Accept-Language。
9- - 建议:
10- - 收窄 ` resourceTypes ` 至会携带 Accept-Language 的类型:` main_frame ` , ` sub_frame ` , ` xmlhttprequest ` (基本可覆盖 fetch/XHR),如需谨慎可保留 script/` image ` 等是否冗余评估。
11- - 如果能接受仅针对 http/https,可通过 ` regexFilter ` 或规则集合减少歧义(可选)。
12-
13- 2 . SW 日志与 i18n 加载顺序
14-
15- - 现状:
16- - DomainRulesManager 依赖全局 domainManagerI18n,注释称 shared-i18n-base.js 已在 background.js 通过 importScripts 加载(未在审查片段中直接看到)。
6+ - DomainRulesManager 依赖全局 domainManagerI18n,注释称 shared-i18n-base.js 已在 background.js 通过 importScripts 加载(未在审查片段中直接看到)。
177- 风险:若加载顺序变更或未来重构为 ESM,可能造成 i18n 未就绪。
18- - 建议:在 background.js 顶部保证导入顺序:shared-i18n-base.js -> i18n/* -i18n.js -> 其他模块;或在 DomainRulesManager 内对 i18n 缺失做好降级处理(已有,但建议保证顺序)。
8+ - 建议:在 background.js 顶部保证导入顺序:shared-i18n-base.js -> i18n/* -i18n.js -> 其他模块;或在 DomainRulesManager 内对 i18n 缺失做好降级处理(已有,但建议保证顺序)。
199
20- 3 . 域名规则加载的健壮性
10+ 2 . 域名规则加载的健壮性
2111
2212- 现状:
23- - domain-rules.json 使用 fetch(getURL(..)),无超时/重试;失败时返回空规则。
13+ - domain-rules.json 使用 fetch(getURL(..)),无超时/重试;失败时返回空规则。
2414- 建议:
25- - 为规则文件加载增加超时与有限重试;失败时可设置“ 只使用 TLD 兜底”或“ 直接走 fallback 语言,不自动切换” 策略,避免误判。
15+ - 为规则文件加载增加超时与有限重试;失败时可设置" 只使用 TLD 兜底"或" 直接走 fallback 语言,不自动切换" 策略,避免误判。
2616
27- 4 . 自定义规则变更的缓存失效
17+ 3 . 自定义规则变更的缓存失效
2818
2919- 现状:
3020 - 存在自定义规则加载逻辑与缓存(domainCache、parsedDomainCache),但未见"自定义规则更新后自动清理/失效缓存"的路径。
3121- 建议:
32- - 在写入/修改自定义规则后调用 clearCache(true) 或精细化失效,避免旧缓存导致匹配不生效。
22+ - 在写入/修改自定义规则后调用 clearCache(true) 或精细化失效,避免旧缓存导致匹配不生效。
3323
34- 5 . 更新检查与网络权限
24+ 4 . 更新检查与网络权限
3525
3626- 现状:
37- - UpdateChecker 针对 GitHub Releases 有完善的超时/重试/降级;但对 host_permissions 声明不明(MV3 中 extension pages 跨域 fetch 通常允许,但建议最小权限)。
27+ - UpdateChecker 针对 GitHub Releases 有完善的超时/重试/降级;但对 host_permissions 声明不明(MV3 中 extension pages 跨域 fetch 通常允许,但建议最小权限)。
3828- 建议:
39- - 若 manifest 中启用了 ` host_permissions: ["https://api.github.com/*"] ` ,请确认最小化;若未声明但能正常工作,可在文档中注明“ 无需 host_permissions” 。
29+ - 若 manifest 中启用了 ` host_permissions: ["https://api.github.com/*"] ` ,请确认最小化;若未声明但能正常工作,可在文档中注明" 无需 host_permissions" 。
4030
4131低优先级/可读性与维护性
4232
43- 6 . 消息处理 return true 一致性
33+ 5 . 消息处理 return true 一致性
4434
4535- 现状:
4636
47- - onMessage 的分支大多 ` return true ` 以保持异步响应。请确保新增消息类型也保持一致,避免响应丢失。
37+ - onMessage 的分支大多 ` return true ` 以保持异步响应。请确保新增消息类型也保持一致,避免响应丢失。
4838
49- 7 . 命名与常量集中
39+ 6 . 命名与常量集中
5040
5141
5242- 建议:
5343
54- - 将 RULE_ID、默认语言(DEFAULT_LANG_EN, DEFAULT_LANG_ZH)、重试常量、缓存大小等集中到 ` shared/constants.js ` ,便于统一修改。
44+ - 将 RULE_ID、默认语言(DEFAULT_LANG_EN, DEFAULT_LANG_ZH)、重试常量、缓存大小等集中到 ` shared/constants.js ` ,便于统一修改。
5545
56- 8 . 统一日志接口
46+ 7 . 统一日志接口
5747
5848
5949- 建议:
6050
61- - sendBackgroundLog 很好用;建议统一所有 console.log/warn/error 入口(尤其 Service Worker 侧),便于开关调试等级与搜集问题。
51+ - sendBackgroundLog 很好用;建议统一所有 console.log/warn/error 入口(尤其 Service Worker 侧),便于开关调试等级与搜集问题。
6252
63- 9 . 文档与注释
53+ 8 . 文档与注释
6454
6555
6656- 建议:
67- - 在 ` README ` 或 Wiki.md 增补 SW 生命周期与初始化流程图;标注“ 为何规则清理只清理 RULE_ID” 。
57+ - 在 ` README ` 或 Wiki.md 增补 SW 生命周期与初始化流程图;标注" 为何规则清理只清理 RULE_ID" 。
6858
6959MV3 合规检查(重点项)
7060
7161- Service Worker:
7262 - 无长轮询/持久计时器;消息处理 return true;OK。
7363- 权限:
74- - 使用 declarativeNetRequest(已在 debug 检查中校验),如果使用了 ` declarativeNetRequestFeedback ` 需确认是否实际使用,否则移除。
75- - 读取 tab.url 需 tabs 权限或相应 host 权限;核对 manifest.json 是否已声明。
64+ - 使用 declarativeNetRequest(已在 debug 检查中校验),如果使用了 ` declarativeNetRequestFeedback ` 需确认是否实际使用,否则移除。
65+ - 读取 tab.url 需 tabs 权限或相应 host 权限;核对 manifest.json 是否已声明。
7666- CSP:
77- - popup.html 未见内联脚本;使用外链脚本;OK。
67+ - popup.html 未见内联脚本;使用外链脚本;OK。
7868- web_accessible_resources:
7969 - 确保仅暴露必要资源(字体/检测页/图片),避免扩大暴露面。
8070- messaging:
81- - onMessage 使用模式正确;异步返回已 return true;OK。
71+ - onMessage 使用模式正确;异步返回已 return true;OK。
8272- DNR 规则:
83- - ` modifyHeaders ` 使用动态规则;OK。建议收窄资源类型(见问题 4) 。
73+ - ` modifyHeaders ` 使用动态规则;OK。
8474
8575缓存正确性与性能
8676
8777- LRU 实现正确(基于 Map 插入顺序;重复键先删后设;满容量淘汰首个)。
88- - maxCacheSize=100 保守,合理。可考虑曝光为设置或根据内存占用自适应。
78+ - maxCacheSize=100 保守,合理。可考虑曝光为设置或根据内存占用自适应。
8979- 命中率统计简洁;考虑在日志中周期性输出以便调优。
90- - 中枢路径上尽量减少 getDynamicRules 调用频率(见问题 2)。
80+ - 中枢路径上尽量减少 getDynamicRules 调用频率(见问题 2)。
9181
9282i18n 与回退
9383
94- - BaseI18n 提供了 SW/Popup 区分与回退;日志键覆盖较全。
84+ - BaseI18n 提供了 SW/Popup 区分与回退;日志键覆盖较全。
9585- 建议:
9686 - 增加缺失键检测(构建或调试脚本),避免运行时 KeyError。
9787 - 对用户可见文本(Popup)务必保证双语覆盖;对日志键缺失可接受。
9888
9989消息契约一致性
10090
101- - Popup/Debug 与 background.js 的消息类型较一致:` UPDATE_RULES ` /` GET_CURRENT_LANG ` /` AUTO_SWITCH_TOGGLED ` /` RESET_ACCEPT_LANGUAGE ` /` GET_DOMAIN_RULES ` /` UPDATE_CHECK ` /缓存操作系列。
91+ - Popup/Debug 与 background.js 的消息类型较一致:` UPDATE_RULES ` /` GET_CURRENT_LANG ` /` AUTO_SWITCH_TOGGLED ` /` RESET_ACCEPT_LANGUAGE ` /` GET_DOMAIN_RULES ` /` UPDATE_CHECK ` /缓存操作系列。
10292- 建议:
10393 - 建立一个共享的类型常量表和 TS 风格的 Payload 定义(即便项目是 JS,也可在 docs 中维护)。
10494
@@ -107,12 +97,11 @@ i18n 与回退
10797- 广泛修改 Accept-Language(全站生效)是预期行为,但请确认:
10898 - 是否需要对特定域名白名单/黑名单处理(例如银行/支付站点);
10999 - 是否需要在 Debug 页显式提示此行为范围。
110- - Host permissions 尽量最小化;不需要的权限移除(例如 ` declarativeNetRequestFeedback ` 如未用)。
111- - fetch 用于本地打包资源和 GitHub API;对远端请求建议统一加超时与错误分类(规则文件已打包则影响小)。
100+ - Host permissions 尽量最小化;不需要的权限移除(例如 ` declarativeNetRequestFeedback ` 如未用)。
101+ - fetch 用于本地打包资源和 GitHub API;对远端请求建议统一加超时与错误分类(规则文件已打包则影响小)。
112102
113103可操作修复清单(按优先级)
114104
115- - 收窄 DNR ` resourceTypes ` 。
116105- 自定义规则更新后清理/失效缓存。
117- - 为 domain-rules.json 加超时/重试(或只在首次失败时 fallback 并上报日志)。
118- - 确认 manifest.json 权限最小化,并在 docs 中记录网络访问与安全边界。
106+ - 为 domain-rules.json 加超时/重试(或只在首次失败时 fallback 并上报日志)。
107+ - 确认 manifest.json 权限最小化,并在 docs 中记录网络访问与安全边界。
0 commit comments