专题

配置更新后不生效:缓存与刷新该怎么做

解决 ClashX 配置修改后“纹丝不动”的尴尬

你辛辛苦苦修改了配置文件,或者刚刚点击了更新订阅,结果发现访问速度还是那么慢,或者本该走代理的网站依然打不开。这通常是因为各种层级的缓存在作怪。

1. 核心层面的重载 (Reload)

ClashX 只是一个外壳(UI),真正的活儿是底层的 Clash 核心在做。有时候 UI 显示更新成功,但核心还在跑旧的逻辑。

  • 操作方案:在 ClashX 菜单中,找到“配置”,先随便勾选另一个文件,然后再勾选回你想要用的那个文件。这种“来回切换”的操作能强制核心重载。
  • 更彻底的方法:选择菜单中的“重载配置文件”选项。

2. 系统层面的 DNS 缓存 (macOS)

macOS 会为了提速而缓存 DNS 解析结果。如果你刚改了分流规则,系统可能还在用之前缓存的错误解析。

  • 操作方案:打开“终端 (Terminal)”,执行以下命令: sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder 执行后需要输入开机密码(输入时屏幕不显示字符)。

3. 浏览器层面的 Socket 缓存

Chrome 或 Edge 等浏览器会长时间保持已建立的 Socket 连接。即便你改了代理设置,浏览器可能还在通过旧的、已经断开的连接进行请求。

  • 操作方案
    • 简单办法:完全退出浏览器(Cmd + Q)再重新打开。
    • 进阶办法:在 Chrome 地址栏输入 chrome://net-internals/#sockets,点击 Flush socket pools 按钮。

4. 规则匹配优先级 (Rules Priority)

有时候配置没生效是因为被“拦截”了。YAML 文件中的规则是从上往下读取的。

  • 检查逻辑:如果你在文件最顶部写了一个 GEOIP,CN,DIRECT(国内 IP 直连),而你新加的国外网站刚好用了个国内 CDN 节点,那它永远也匹配不到代理规则。请务必检查你的规则排布顺序。

5. 配置文件路径是否正确

ClashX 支持多个配置文件夹。请确保你修改的是“配置 -> 打开配置文件夹”中打开的那个目录下的文件。有些用户误改了备份文件,那自然是没有任何效果的。

如果以上操作都没能解决你的问题,可能是配置文件本身存在隐藏的语法错误。前往 ClashX 主站 获取最新的排错脚本,它能帮你一键定位问题所在。

准备好开始了吗?

前往 clashx.tech 获取 ClashX 最新版本,开始使用。

常见问题

我已经点击更新了,为什么节点还是旧的?

这通常是由于 Clash 核心未及时重载。请在菜单中手动选择一次'重载配置文件',或者切换到另一个配置文件再切回来。

怎么刷新 macOS 的 DNS 缓存?

打开终端,输入 `sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder` 并回车执行。

浏览器刷新了还没用怎么办?

浏览器往往有自己的连接缓存。建议开启无痕窗口(Incognito)尝试,或者清理浏览数据中的'缓存的图片和文件'。

重载配置文件和重启 ClashX 有区别吗?

有区别。重载配置文件仅让核心重新读取 YAML 文本;重启 ClashX 则会重新初始化整个网络代理环境,建议在遇到疑难杂症时尝试重启。

为什么规则模式下的修改始终无效?

请检查你的 rules 顺序。规则匹配是从上到下的,如果上面的规则已经命中了流量,你修改下面的规则是没有任何作用的。

配置文件中的 external-controller 有影响吗?

如果有,ClashX 可能无法控制核心。确保其地址和端口(默认 9090)没有被占用。