全站智能检索

直接说出你的问题

AI 会理解问题含义,并从本站机场档案和实用文章中找出最相关的内容。

试试:

输入问题后按回车搜索。

故障排查

Clash/Mihomo 更新订阅显示 304 Not Modified,是失败了吗?

解释 Mihomo 外部资源更新里的 ETag 与 HTTP 304:它通常表示远端确认内容未变化,应继续使用本地副本,不等于订阅下载失败。

先看重点通常不是失败。304 Not Modified 表示这次条件请求没有拿回新正文,远端认为客户端已有的副本仍然有效;节点没有变化正是预期结果。只有面板已明确发布新内容、客户端却持续拿到 304,或本地副本本身无法读取时,才需要继续查缓存、远端 ETag 与客户端日志。

点了更新,日志没有熟悉的 200 OK,而是跳出 304 Not Modified;节点名称、数量和流量信息也都没变。这个画面很像客户端什么都没下载到,但在 HTTP 里,304 本来就不携带新的正文。

只看到 304 时,不要先重置订阅链接。 它通常表示远端检查了客户端带来的缓存验证信息,确认现有副本仍可使用。更新动作发生过,只是服务器认为没有必要把同一份内容再传一遍。

304 是“继续用旧副本”,不是普通跳转

HTTP 的条件请求会带上此前取得的验证信息。以 ETag 为例,客户端保存远端返回的标识,下一次请求可用 If-None-Match 询问“现在还是这一版吗”。标识仍匹配时,服务器可以返回 304,让客户端使用已经保存的内容。

IETF 的 RFC 9110 明确说明,304 针对条件 GET 或 HEAD;服务器无需重新传输正文,因为客户端已有有效表示。它虽然属于 3xx 状态码,却不是让人改去另一个网址下载的常规重定向,响应里也不会附上一份新的订阅正文。

Mihomo 当前官方配置文档写明,外部资源下载默认启用 ETag 支持,配置项是 etag-support: true。项目早期的官方功能需求记录还把 proxy provider 与 rule provider 都列为 304 协商的使用对象。因此,日志里的 304 可能对应节点集合或规则集;图形客户端把这些动作统称为“更新”,不代表它们都是同一份资源。

节点没变化,什么时候才算异常

单次 304 与“列表保持不变”彼此一致,不能单独证明订阅过期、机场停运或客户端缓存损坏。更有用的是把状态码、客户端已有内容和远端是否真的改版放在一起看。

现象 当前证据更支持什么 还不能证明什么
返回 304,原有节点仍可读取 远端认可现有副本,未传新正文 节点当前都可连接
返回 304,节点数量没有变化 本轮没有获得不同内容 账户一定没到期
返回 200,随后出现解析错误 已取得响应,问题更接近内容格式或字段兼容 网络下载完全失败
返回 401、403 或超时 认证、权限或连接层需要另查 ETag 缓存一定有错

“更新成功但没有节点”也不是 304 的同义词。客户端可以成功拿到一份空列表、格式不兼容的配置,或一份不包含当前筛选条件所需节点的内容;这些情况应按更新后没有节点的分层判断继续区分。

规则集同样要看实际对象。某个 rule provider 返回 304,只表示那份远程规则没有重新传输,不代表节点订阅也检查过。规则更新报错是否影响现有连接,可对照规则集更新失败的影响边界

面板已改内容,客户端却一直收到 304

如果服务面板只是改了公告、套餐或显示名称,订阅资源本身可能根本没有变化,304 仍然合理。只有面板明确说明节点配置已经更新,并且同一订阅在合理时间后仍持续返回 304,才出现值得核对的矛盾。

这时需要保留的是可比较证据:更新时间、客户端与内核版本、请求对应的是 proxy provider 还是 rule provider、HTTP 状态,以及 304 前后本地实际加载的节点名称或规则版本。若另一份干净的客户端副本取得 200 和新内容,而原环境仍反复复用旧副本,差异才更接近本地缓存路径;若多个环境都收到相同 304,则应让资源提供方核对 CDN 或源站发出的 ETag。这里仍不能只凭状态码断言是哪一端配置错误。

不要把完整订阅 URL 粘进公开日志或截图。它往往含有账户 token,泄露后的处理成本远高于一次缓存问题;发给客服前可按代理日志的打码范围保留状态码与时间,并隐藏订阅 URL 的路径、查询参数和凭据。

不必为了看到 200 长期关闭 ETag

关闭 etag-support 可能让外部资源不再走这一条 ETag 验证路径,但“每次都下载完整正文”并不比 304 更正确。内容没有改变时,条件请求可以减少重复传输;把状态码换成 200,也不会修复过期账户、不可用节点或格式错误。

把关闭缓存验证当成永久优化,反而会掩盖真正的问题。若旧节点仍能用而更新偶尔失败,应先分清“现有副本继续工作”和“本次远程检查”两条路径,具体可参考订阅更新失败但旧节点仍可用

本文依据 Mihomo 当前官方配置文档、项目 ETag 功能记录和 RFC 9110 解释协议行为。本站没有读取你的订阅、客户端缓存或机场后台,也没有实际复现某一款图形客户端对 304 的提示方式;客户端把不同远程资源怎样归类显示,仍以其自身实现和日志为准。

资料来源

以下来源于 2026/9/13 复核。版本、支持平台和发布状态以后续官方页面为准。

  1. Mihomo 官方文档:外部资源下载的 ETag 支持
  2. Mihomo 官方 Issue:Proxy Provider 与 Rule Provider 的 304 ETag 功能需求记录
  3. IETF RFC 9110:304 Not Modified

持续更新

收到新教程,也欢迎纠错

想收到新文章,可以关注 TG 频道;发现下载失效、套餐变化或步骤不一致,请附上页面链接和可公开的截图。不要发送订阅链接、密码或完整账户信息。