Repository navigation
GitPort GitHub v0.5.2
相对 v0.5.1,这次动的是大文件派发的内核:14 个文件 +982/−441(另有 4100 行只是把测试从生产文件挪进 src/tests/,运行期零影响)。
一、派发:先实测一遍,再按预计下完时间竞速
- 探测轮:链上有没测过的镜像时,并发分片一片一家轮着发(原子游标),先把每家的真实速度测出来;全员有成绩之后才进入 ECT 竞速。此前没测过的候选只能按 2MB/s 猜,排在后面的、中途新增的镜像都在拿猜测当分母。
- ECT 无容差:预计下完时间(在途字节 ÷ 实测速度)绝对最小者胜;只有完全相等才看谁的并发流少,仍相等才轮转。旧版 5% 并列带在实测速度差几十倍的环境里,等于把分片白送给慢腿。
- 测速从响应头起算:拨号、建连、等待服务器开腔的耗时只算墙钟,不进速度样本。等待是常数,混进去会把快镜像稀释得更狠,候选差距被压平。
- 清场:探测片交卷后,明显慢于链内最快者的镜像盖纪元号,在途流断流交客户端重发;判据用刚测出的实测分,不是猜的。
二、大小文件彻底分开
头像、raw、gist 这类小文件不再参与速度记账、不进 ECT、不写失败窗,只按校准后的链序从头试。大文件才跑探测轮和竞速。此前两类文件共用一本账,一次 40KB 头像的慢启动能决定 2GB 源码包以后走哪家。
三、镜像治理
- 可信镜像白名单:带签名(约 1 小时有效的下载凭证)的下载地址默认只给直连;在工作台勾了「信任」的镜像才放行参与竞速。只对自建、明确不留日志的镜像开启。
- 链序按速度重排:测出的速度直接决定大文件链的顺序并写回 plans.json,IDM 首片和非下载器场景直接命中快腿;重排本身限一秒一次,不占下载路径。
- 镜像价值评估:每次探测的终值记一份到
.cache/mirror_stats.json,攒够样本后按中位速度找出长期垫底者,只在界面和日志里提示「建议停用」,绝不自动改配置。
四、安全与长期运行
- 可信镜像判定由「前缀匹配」改为「同源全等」:
https://gh-proxy.org.evil.tld不再被当成https://gh-proxy.org——签名 URL 等同提货凭证,前缀一松就等于送人。 - 叶子证书缓存带签发时长,超过 358 天自动重签。此前只查域名不看有效期,常驻满一年后该域名的 MITM 握手会集体失败。
- 清理:串发拨号里永远不会触发的取消分支、只做转发的
range_bytes_of。
升级方式:用新 exe 覆盖旧版即可,plans.json / settings.json / 根证书全部保留,无需重新配置。