Shadowrocket 耗电快主要是因为 VPN 常驻后台维持连接、频繁的网络切换、复杂的规则匹配计算以及 DNS 解析开销,以下是分层次的优化方案:
配置层面优化(效果最明显)
DNS 设置精简
dns-server = 223.5.5.5, 119.29.29.29, 8.8.8.8
# 或仅使用系统 DNS(如果节点支持)
# dns-server = system
# 关闭 IPv6(如不需要可显著降低耗电)
ipv6 = false
# 增加 DNS 缓存时间
dns-fallback-system = false
dns-direct-system = false
规则列表精简
- 避免使用过多正则规则:将
DOMAIN-KEYWORD改为DOMAIN-SUFFIX(性能更好) - 精简 GeoIP 数据库:使用 Lite 版本或仅保留常用国家/地区
- 移除无效规则:定期清理已失效的域名规则
- 分流策略:国内域名直连,仅国外域名走代理(减少加密解密开销)
关闭高耗电功能
[General] # 关闭详细日志(改为 error 或关闭) loglevel = error # 关闭 HTTP 抓包/解密(如不需要) # 关闭 MitM(除非必要) # 调整心跳包间隔(不要太频繁) heartbeat = 600
节点与连接优化
选择稳定节点
- 避免频繁断线重连:选择延迟低、丢包率低的节点(重连最耗电)
- 使用 URL-Test 自动选择:让 Shadowrocket 自动选择延迟最低的节点,避免手动切换
- 协议选择:SS/SSR 比 VMess/VLESS 更省电(握手过程更简单)
连接模式调整
- 使用 TUN 模式(配置 → 模式 → 代理模式 → TUN):比传统 VPN 模式更省电
- 关闭 "始终开启 VPN"(除非必要):iOS 设置 → VPN → Shadowrocket → 关闭"始终开启"
系统级优化
iOS 后台设置
- 开启后台 App 刷新:设置 → 通用 → 后台 App 刷新 → 开启 Shadowrocket( paradoxically,关闭后系统会频繁唤醒应用检查连接,反而更耗电)
- 关闭定位服务:Shadowrocket 不需要定位,设置 → 隐私 → 定位服务 → 关闭
网络切换优化
- 避免频繁 WiFi/4G 切换:在信号差的区域关闭 WiFi,避免网络切换导致 VPN 重建连接
- 开启"按需连接":配置 → 按需连接 → 开启(仅在需要时建立 VPN)
进阶优化(脚本/重写)
如果使用了脚本或重写:
- 减少脚本数量:每个 HTTP 请求都会触发脚本计算,非常耗电
- 使用本地脚本:避免远程脚本频繁更新
- 关闭 MitM:证书解密(HTTPS 解密)会显著增加 CPU 负担,非必要不开
快速检查清单
按优先级检查:
- [ ] 日志级别是否设为
error或warning? - [ ] 是否关闭了 IPv6(如不需要)?
- [ ] 规则数量是否超过 5000 条?(考虑精简)
- [ ] 是否开启了 HTTP 抓包/MitM?
- [ ] 节点是否稳定(观察是否有频繁重连日志)?
- [ ] 是否使用了过多远程脚本/重写?
终极方案
如果以上优化后仍耗电严重:
- 使用 "配置" 而非 "全局代理":仅代理必要应用
- 定时断开:不需要代理时手动断开(控制中心长按网络图标关闭 VPN)
- 更换客户端:尝试使用 Surge(更省电但付费)或 Quantumult X(规则处理更高效)
提示:Shadowrocket 在 iOS 上的正常后台耗电约为每小时 1-3%,如果超过 5%/小时,通常是规则配置或节点稳定性问题,建议先重置配置,使用最小化规则测试基准耗电。