sub-store-org / Sub-Store

Advanced Subscription Manager for QX, Loon, Surge, Stash and Shadowrocket!
https://www.notion.so/Sub-Store-6259586994d34c11a4ced5c406264b46
GNU Affero General Public License v3.0
4.99k stars 553 forks source link

脚本使用缓存问题 #316

Closed Among2844 closed 4 months ago

Among2844 commented 4 months ago

遇到一个比较诡异的情况,并且经常出现

具体是这样的,我有多个订阅,对每个订阅都使用了基本一样的节点操作

先进行

节点测活 gpt 检测 重命名

其中节点测活和 gpt 检测我开启了缓存参数 最后将订阅组合成一个订阅,现在的问题是经常会出现错误命名,并且出现重复节点

比如 3 个机场,机场 1 只有日本,机场 2 只有美国,机场 3 只有新加坡 但最后组合出来传到 gist 里变成了

机场 1 日本 1
机场 1 日本 2
机场 1 日本 3
机场 1 日本 4
机场 1 新加坡 1
机场 1 新加坡 2
机场 1 新加坡 3

机场 2 美国 1
机场 2 美国 2
机场 2 美国 3
机场 2 美国 4
机场 2 美国 5
机场 2 美国 6
机场 2 美国 7
机场 2 新加坡 1
机场 2 新加坡 2
机场 2 新加坡 3

机场 3 新加坡 1
机场 3 新加坡 2
机场 3 新加坡 3
机场 3 新加坡 4
机场 3 日本 5
机场 3 新加坡 6
机场 3 新加坡 7
机场 2 美国 4
机场 2 新加坡 5
机场 2 新加坡 6
机场 2 新加坡 7

实际情况更混乱,手动点单条订阅预览也是混乱的节点名称,仔细看节点信息发现机场 1 里的预览出现的根本不是机场 1 的节点而是机场 2 的节点,但名称都是机场 1 xxx,只有在订阅编辑里点击即时预览才能正确显示

xream commented 4 months ago

请提供复现方法

Among2844 commented 4 months ago

请提供恢复方法

经过多次测试得到稳定复现方式,首先准备一条组合订阅,我这里这条订阅里由 32 条单条订阅组成,每个订阅里只有一条脚本操作,就是重命名

将这条组合订阅上传到 gist, 得到 gist-1

查看 gist-1 中的节点,发现完全没问题,当前节点有600+,当前环境没有任何节点缓存

之后,添加一条单条订阅,将刚刚得到的 gist-1 进一步处理,我这里添加了节点解析和gpt 检测并且这里我加上了cache参数来开启缓存

将它上传到gist,得到 gist-2,当前环境有了节点缓存

诡异的来了,在得到gist-2后,再次同步gist-1,之后查看节点,你就会发现名称一样,但节点内容变了,这里的变化不是指数量上的改变,而是节点内容

比如这样:

第一次上传时

  - {"name":"🇮🇳 机场1 印度 01","type":"ss","server":"xxx.dev","port":1080,"cipher":"12345","password":"12345","udp":true}
  - {"name":"🇮🇳 机场1 印度 02","type":"ss","server":"xxx.dev","port":1080,"cipher":"12345","password":"12345","udp":true}
  - {"name":"🇮🇳 机场1 印度 03","type":"ss","server":"xxx.dev","port":1080,"cipher":"12345","password":"12345","udp":true}

第二次上传时

 - {"name":"🇭🇰 机场1 香港 01","type":"vmess","server":"111.sss.best","port":443,"uuid":"xxxxx-xxxxx-xxxxx","alterId":0,"cipher":"auto","udp":true,"tls":true,"network":"ws","ws-opts":{"path":"/stream","headers":{"Host":"sssss.cloudfront.net"}},"servername":"sssss.cloudfront.net"}

可以看到,第二次上传时的节点信息名称依旧是机场1 xxx,但实际上节点信息却是其他机场的节点,而非机场1的节点,数了一下,32条订阅,最终有13条订阅交换了节点信息。

xream commented 4 months ago

@jockstrap1044 你还是提供一下完整的复现数据吧 你这样太难弄了 你可以把敏感信息去掉

image
xream commented 4 months ago

@jockstrap1044 你 telegram https://t.me/xream 跟我说吧. 还是不清楚怎么复现

xream commented 4 months ago

@jockstrap1044 发现问题了...你用了同一个自定义缓存 key 当然有问题...你应该用不同的 key

image