Clash Verge Rev 订阅同步 | 304缓存 · 定时拉取 · 零断连热重载

订阅更新是 Verge Rev 最高频操作。本文对比「定时任务自动拉取」与「托盘手动刷新」两条路径下的 HTTP 行为、磁盘写入与 clash-api 重载时序,给出降低断连窗口的配置建议。企业变更流程 → VR-B04;日志排障 → SC-04

Clash Verge Rev 订阅同步流程

Clash Verge Rev 订阅数据的存储位置

每个 Profile 在 profiles/ 目录有独立 YAML 缓存;profiles.yaml 记录元数据(名称、URL、更新间隔、merge 链)。远程拉取成功后先写临时文件,校验解析通过再原子替换,避免半截文件导致内核加载失败。

HTTP 304 Not Modified 路径

Verge Rev 在 If-None-Match / If-Modified-Since 可用时携带条件请求。服务器返回 304 时跳过写盘与 API 重载,托盘仍显示上次同步时间。这对大型订阅(500+ 节点)可节省 2—5 秒解析时间。

强制刷新

配置页「更新」按钮可带 Cache-Control: no-cache 绕过 304,用于节点大面积失效时确认上游是否已推送新列表。

定时任务 cron 表达式

默认 0 */6 * * * 即每 6 小时整点执行。可改为 0 3 * * * 仅在凌晨 3 点拉取,降低办公时段意外重载概率。语法错误时 Verge Rev 会在日志标红并回退默认间隔。

# profiles.yaml 元数据示例
update_interval: 360  # 单位:分钟,与 cron 二选一视版本而定

热重载:PUT /configs 与连接保持

配置变更后 Rust 层向 127.0.0.1:9097/configs 发送 PUT,mihomo 执行热加载。与完全重启 sidecar 相比,已建立 TCP 连接大多可保留;实测 YouTube 长连接在节点列表仅增删时未中断,但 proxy-groups 名称变更会导致组内选择失效需手动重选。

断连窗口对比(实测数据)

操作平均耗时活跃 TCP 中断率
304 无变更< 0.5s0%
热重载(节点增减)1.2—2.8s< 5%
重启 sidecar4—8s约 40%

测试样本:Windows 11,订阅 180 节点,同时进行 HTTPS 下载与 ICMP 探测。

订阅失败常见错误码

  • yaml: unmarshal errors — 上游返回非 Clash 格式或 Base64 解码后缺 proxies
  • x509: certificate signed by unknown authority — 企业代理替换证书,需系统信任库导入
  • context deadline exceeded — URL 超时,调大设置中的 fetch 超时或检查 DNS

验证热重载成功

curl -s -H "Authorization: Bearer $SECRET" http://127.0.0.1:9097/configs -X PUT -d '{}'
预期:返回 204 或 200;日志出现 configuration reloaded;活跃连接大部分保持

本专题边界

304/热重载时序仅本站深度维护。merge 补丁实战 → 本站合并专题;merge 审批模板 → VR-B04。

下一篇:TUN 全局模式

阅读 TUN 专题