Skip to content

Commit 5c97d02

Browse files
authored
ver: update to v1.8.74 (#38)
[收窄 DNR 资源类型与匹配范围,删减无效内容](264cb73) [TODO update](3f954c2)
2 parents 860f2aa + 3f954c2 commit 5c97d02

5 files changed

Lines changed: 132 additions & 229 deletions

File tree

background.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ const updateHeaderRulesInternal = async (language, retryCount = 0, isAutoSwitch
269269
},
270270
"condition": {
271271
"urlFilter": "*",
272-
"resourceTypes": ["main_frame", "sub_frame", "stylesheet", "script", "image", "font", "object", "xmlhttprequest", "ping", "csp_report", "media", "websocket", "other"]
272+
"resourceTypes": ["main_frame", "sub_frame", "xmlhttprequest", "script"]
273273
}
274274
};
275275

docs/Problems.md

Lines changed: 32 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,104 +1,94 @@
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

6959
MV3 合规检查(重点项)
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

9282
i18n 与回退
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

Comments
 (0)