配置更新后不生效:缓存与刷新该怎么做
解决 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 主站 获取最新的排错脚本,它能帮你一键定位问题所在。
常见问题
这通常是由于 Clash 核心未及时重载。请在菜单中手动选择一次'重载配置文件',或者切换到另一个配置文件再切回来。
打开终端,输入 `sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder` 并回车执行。
浏览器往往有自己的连接缓存。建议开启无痕窗口(Incognito)尝试,或者清理浏览数据中的'缓存的图片和文件'。
有区别。重载配置文件仅让核心重新读取 YAML 文本;重启 ClashX 则会重新初始化整个网络代理环境,建议在遇到疑难杂症时尝试重启。
请检查你的 rules 顺序。规则匹配是从上到下的,如果上面的规则已经命中了流量,你修改下面的规则是没有任何作用的。
如果有,ClashX 可能无法控制核心。确保其地址和端口(默认 9090)没有被占用。