geoip.dat 和 geosite.dat 占用内存也太大了,有优雅的方案吗

2025 年 12 月 30 日
 f1ynnv2
macOS 上用 clashmac, mihomo 内核,之前用的配置文件是基于某个订阅文件手搓的,列了上万条规则,domian-suffix, domain-keyword 之类的。

今天偶然发现原来可以直接使用 geoip.dat 和 geosite.dat ,规则写起来非常优雅,只写了几十个规则就 OK 了。

结果刚刚发现 clashmac 占用内存达到了 320M ,还以为出 bug 了,切换回原来自己手搓的上万条规则的配置文件立刻又降回 40M 。

毕竟是笔记本,内存和耗电还得考虑在内,占用这么多内存有点夸张了。搜了一下大概知道原理其实就是 clash 会把两个 dat 全都载入内存加快查询速度,因为记录实在太多所以占内存。

有一个方案是使用精简版的的 geoip_only_cn.dat, 但是也有个问题比如 telegram 其实有很多直连 ip 的还得依赖 cn 之外的 ip 来判断。

不知道有没有什么更优雅的方案,既省内存又能复用这种 geoip.dat 的规则写法?
6183 次点击
所在节点    问与答
18 条回复
aerAzLNE
2025 年 12 月 30 日
到底有多少规则要写……一个!cnip 兜底,常用的 AI/流媒体单独拉出来,去广告交给浏览器插件,小几十行几百行解决问题
MacTavish123
2025 年 12 月 30 日
FrankAdler
2025 年 12 月 30 日
我是完全手搓规则,自己常访问的网站就那么多,配到打不开的配合 chrome 扩展 zeroomega 快速配置,用不了多少功夫
FrankAdler
2025 年 12 月 30 日
如果用 singbox ,他把 geosite geoip 拆成了一个个小文件,你可以按需引入,应该可以节省非常多内存和硬盘
cs1837
2025 年 12 月 30 日
@FrankAdler #4 geosite+geip 也就 13M ,mihomo 核心 33M ,singbox 核心 50M (个别平台 60M ),内存不知道,硬盘肯定是省不了的
f1ynnv2
2025 年 12 月 30 日
@MacTavish123 感谢,试了一下 geoip-lite.dat 和 geosite-lite.dat ,内存确实少了一半但还是占到了 160MB 。我打算准备两个配置文件了,一个是软路由上用的 openclash 就直接用完整版的 geoip/geosite ,反正配置够。笔记本上偶尔外出的还是手搓 rule-set 吧
hefish
2025 年 12 月 30 日
换台高配 mac 吧。。。
电池的话。。。插着电用。
flynaj
2025 年 12 月 30 日
在路由器上搞,轻轻松松,需要可以刷机的路由器 https://m.tb.cn/h.76Ek0QU?tk=qyO0fAEpbIX
FrankAdler
2025 年 12 月 31 日
@Lightbright 夸张了,只有一个 60 的,其他都是 15m 上下 https://github.com/SagerNet/sing-box/releases/tag/v1.12.14
valuedlute
2025 年 12 月 31 日
rules:
- IP-CIDR,223.5.5.5/32,DIRECT,no-resolve

- GEOIP,lan,DIRECT,no-resolve
- GEOSITE,private,DIRECT
# - RULE-SET,advertising,REJECT
- GEOSITE,google-gemini,🇯🇵 日本 01

- GEOSITE,geolocation-!cn@cn,DIRECT
- GEOIP,cn,DIRECT,no-resolve
- GEOSITE,geolocation-cn@!cn,Proxy
- GEOSITE,geolocation-cn,DIRECT
- GEOSITE,geolocation-!cn,Proxy

- MATCH,Proxy

我从哪里抄的改了下 好像也不同特别复杂 advertising 自己找个就行
cs1837
2025 年 12 月 31 日
@FrankAdler 你解压再看看,这里基本都是有压缩的
IamJ
2025 年 12 月 31 日
规则集是目前比较好的方案
jamme
2025 年 12 月 31 日
https://wiki.metacubex.one/config/rule-providers/

想要细分的话,可以自己写规则集,甚至可以直接自己搭一个 converter 服务,然后订阅自己的转换地址,一些熟知、主流的工具基本都支持转换,哪怕手机、平板、PC 和 Mac 使用的工具都不相同,这样可以一劳永逸,还可以创建自定义 list 去维护自己想要的分流规则。
f1ynnv2
2025 年 12 月 31 日
@valuedlute 这种使用 GEOIP 和 GEOSITE 讲法来写规则的确实简洁,但是 GEOIP 和 GEOSITE 两个数据包需要一直载入内存,内存占用会特别高,我提到的就是这个问题,占了 320MB 内存。即使使用 geoip-lite 和 geosite-lite 也会占到 160MB 。台式机或者软路由确实无所谓,但是笔记本一方面要考虑内存占用更要考虑耗电
f1ynnv2
2025 年 12 月 31 日
@jamme 感谢,昨天研究了一晚上,也确定是使用这种方案。一些比较大的规则集直接引用别人写好的 mrs ,自己定义规则集就直接用 yaml 。目前简单折腾了一下内存已经在 46M 左右了
guzzhao
2025 年 12 月 31 日
win11 mihomo 占用 38.9mb 也还可以吧 可能是我的规则简单


- GEOSITE,github,🚀 节点选择
- GEOSITE,win-update,DIRECT
- GEOSITE,microsoft@cn,DIRECT
- GEOSITE,microsoft,microsoft
- GEOIP,lan,DIRECT
- GEOIP,private,DIRECT
- GEOIP,CN,DIRECT
- GEOSITE,private,DIRECT
- GEOSITE,CN,DIRECT
- MATCH,🐟 漏网之鱼
f1ynnv2
1 月 1 日
最后的方案,加载了 10 个 mrs ,目前完全替代了 geoip 和 geosite ,内存占用在 40~50MB 左右。

```
- DOMAIN-KEYWORD,vscode,GitHub 节点
- DOMAIN-KEYWORD,visualstudio,GitHub 节点
- DOMAIN-KEYWORD,copilot,GitHub 节点
- DOMAIN-SUFFIX,apple.com,DIRECT
# Rule-set
- RULE-SET,Advertising,REJECT
- RULE-SET,YouTube,机场-JMS
- RULE-SET,Google,Google 节点
- RULE-SET,GitHub,GitHub 节点
- RULE-SET,AI,OpenAI 节点
- RULE-SET,PayPal,🇺🇲 美国
- RULE-SET,Crypto,🇯🇵 日本
- RULE-SET,Proxy,机场-JMS
- RULE-SET,Private,DIRECT
- RULE-SET,PrivateIP,DIRECT
## 默认
- MATCH,DIRECT
```
SenLief
1 月 3 日
用 rule-set 啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1182254

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX