增加 DNS 缓存时间

针对 Shadowrocket(小火箭) 的系统资源占用优化,特别是解决耗电高、CPU占用高、内存占用大等问题,可以从以下几个层面进行优化:

配置层面优化(最关键)

精简规则集

  • 问题:规则数量超过 5000-10000 条会显著增加 CPU 负担和匹配延迟
  • 优化
    • 使用 精简版规则(如仅保留常用网站分流)
    • 合并重复规则,删除不常用的 DOMAIN-KEYWORD 规则
    • 优先使用 DOMAIN-SUFFIX 而非大量 DOMAIN 规则(匹配效率更高)
    • 避免使用过于复杂的逻辑规则(如 AND, OR, NOT 嵌套)

优化节点组策略

  • 问题:自动测速过于频繁会导致持续的网络请求和计算
  • 优化
    • url-test / fallbackinterval 调整为 300-600秒(默认通常是300秒)
    • 关闭 lazy 选项(或确保开启,避免后台持续测试)
    • 减少节点组中的节点数量(保留 3-5 个常用节点即可)

功能设置优化

日志与调试

设置 → 日志记录 → 关闭 或 设置为"错误"级别
  • 说明:Verbose/Debug 模式会持续写入日志,增加磁盘和 CPU 负担

DNS 优化

  • 配置
    • 使用 DoH/DoT 替代传统 DNS(减少查询次数)
    • 启用 DNS 缓存dns-server 中设置 hijack
    • 关闭 IPv6 解析(如果网络不支持 IPv6):
      设置 → 高级 → IPv6 → 关闭

连接设置

  • TCP 并发:适当降低(默认通常足够)
  • 心跳包:调整为 60-120秒(默认 30 秒过于频繁)
  • UDP 转发:如不需要游戏加速,可关闭或限制

高级优化技巧

脚本与 MitM 优化

  • 脚本:减少使用 JavaScript 脚本(特别是复杂的美化脚本或定时脚本)
  • MitM(中间人攻击):仅对必要域名开启,证书验证会增加 CPU 负担
  • Rewrite:精简重写规则,避免全局匹配

使用轻量级代理模式

  • TUN 模式(iOS):资源占用较高,仅在需要代理所有流量时使用
  • 混合模式:优先使用 规则模式 而非 全局模式(减少不必要的连接)

缓存优化

在配置文件中添加:

[General]dns-cache-ttl = 600
# 连接复用
tcp-concurrent = false

iOS 系统级优化

后台策略

  • 设置 → 通用 → 后台 App 刷新:关闭(Shadowrocket 不需要后台刷新即可工作)
  • 设置 → 电池 → 低电量模式:开启时会自动限制后台网络活动

网络权限管理

  • 设置 → 无线局域网 中,确保小火箭仅在使用时开启代理
  • 关闭 "始终允许" 定位权限(除非需要基于位置的分流)

监控资源占用

  • 查看耗电:设置 → 电池 → 查看 Shadowrocket 的耗电比例(正常应 < 5%)
  • CPU 监控:使用 Sysdiagnose 或第三方工具(如 CocoaTop 需越狱)查看实时 CPU

macOS 特定优化(如适用)

如果是 macOS 版本:

  1. 网络扩展:在"系统设置 → 网络 → 扩展"中,确保仅启用必要的扩展
  2. 开机启动:如不需要常驻,关闭"随系统启动"
  3. 菜单栏图标:关闭实时流量显示(减少图形渲染负担)

配置示例(轻量级)

[General]
bypass-system = true
skip-proxy = 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12
dns-server = https://doh.dns.sb/dns-query, 223.5.5.5
fallback-dns-server = system
ipv6 = false
prefer-ipv6 = false
dns-fallback-on-failure = true
hijack-dns = *:53
# 关键:增加间隔减少测速频率
test-timeout = 5
url-latency-benchmark = true
[Rule]
# 精简规则,优先使用 GEOIP 和 DOMAIN-SUFFIX
DOMAIN-SUFFIX,google.com,Proxy
DOMAIN-SUFFIX,github.com,Proxy
GEOIP,CN,DIRECT
FINAL,Proxy
[Proxy Group]
# 减少测频频率
Auto = url-test,Node1,Node2,Node3,interval=600,timeout=5

排查建议

如果优化后仍占用过高:

  1. 重置配置:导出备份后,使用空白配置测试,逐步添加规则定位问题
  2. 检查日志:查看是否有循环请求或错误日志刷屏
  3. 节点问题:某些协议(如 WebSocket + TLS)比直连 TCP 更耗 CPU,尝试更换协议

通过以上优化,正常情况下 Shadowrocket 的 CPU 占用应保持在 1-3%(空闲时),内存占用 20-50MB,且不应显著影响电池续航。

您可以还会对下面的文章感兴趣: