Repository navigation
GitPort GitHub v0.5.1
一、下载加速:直连同台竞速
以前 Release 附件 / 源码包是镜像链的自留地,直连只是「镜像全灭之后」的兜底——这低估了直连:实测下来直连的速度并不输镜像,很多时候甚至更快。
现在直连以「伪镜像」的身份加入 ECT 考试。ECT(预计最早下完时间)= 在途字节 ÷ 实测速度;每个请求开考前,全体候选(镜像 + 直连)按 ECT 排座次,谁预计最早下完谁接这单,失败自动顺延下一位。直连考砸了(拨不通 / 超时)记 60 秒失败窗,先坐冷板凳,窗口一过自己考回来,全程不用手动切换。冷启动没有成绩的候选按链位梯度铺开,不再全挤在链头。
二、负载均衡:不再逮着一只羊薅
以前几家镜像的 ECT 分数一样或相近时,排序基本固定,分片可能一直砸向同一家。现在每单派发做三级抉择:
- ECT 最小者胜;
- 分数相差 ≤5% 算并列——并列组里优先交给「在途并发流最少」的那家:既看速度,也看它手里正压着几条活。负载摊开之后,每条流分到的带宽更厚,还能从源头减少误掐;
- 在途流数也一模一样?随机轮转,雨露均沾。
顺带补了一条「探测轮末位淘汰」:下载器把大文件切成几十个分片并发,每家镜像接到的第一个分片就是它的入学试卷。小分片几秒读完,熬不过慢镜像掐断的 2 秒观察窗——以前考砸了什么账都留不下,下次还当头牌;现在流读完时成绩当场入账,第一个分片就显著慢于同伴中位数一半的,直接 60 秒降权,不给第二次拖后腿的机会。
三、用户反馈的 bug 修复
- 工作台填镜像会冲掉手改:以前在界面点保存,plans.json 里手改 / 收编的条目会被旧页面内存里的清单整个覆盖。现在保存前先合并服务端最新清单,旧页面覆盖不了新条目;删除也改成「合并后剔除」,两个窗口同时开着互删条目的问题一并修掉。
- 全新安装镜像落不进链:首次安装时镜像注册表还没按内容域建键,填了镜像也不生效。现在对齐前先按内容域建好键,填了就生效。
- 示例 Worker 代码修复:自定义镜像页那段自建 CF Worker 的示例代码有几个 bug(边缘缓存的三个缺口),已修。
四、四轮代码审计清出来的问题
- Release 附件 502(重要):GitHub 的 Release 附件 URL 百分百带签名参数(sig / jwt),以前代理见到签名串就把整个请求拒了——直连同台也被一起误杀,零镜像环境下等于无路可走,表现就是「怎么下都 502,过一会儿又自己好」。现在带签名的 URL 只派直连(与浏览器直开行为一致,签名串不落任何第三方),根因清除。
- 双击 exe 唤不出窗口:第二实例通知主实例弹窗的请求,被自家的防跨站校验 403 了。补了个标记头,托盘模式下双击唤窗恢复。
- 系统代理自愈不再误伤别人:启动时清理「残留 PAC」的逻辑过于自信,会把其他代理工具设置的 127.0.0.1 PAC 当成自己的残留删掉。现在只有我们真正接管过(开关开过 / 有备份)才碰注册表,备份判定也改成只认自己写过的地址。
- 白名单域名分片掩体修复:docs / pages 等 10 个域名的 ClientHello 三段分片,因为一个「首字节重复判定」的 bug,实际上只切了第一刀,100ms 间隔从未生效。现在是真·三段发送,封锁窗口期的抗 RST 能力回到设计值。
- git:// 与经代理的 SSH:CONNECT 到非 443 端口(9418 / 22)以前会被按 443 去拨,注定失败;现在明文协议走普通 TCP 隧道,端口照用。
- 其他:客户端明确拒绝压缩(gzip;q=0)不再被强塞压缩体;诊断头 X-GitPort-Route 如实标注实际胜出者(direct / mirror,不再一律写 mirror);502 页面区分失败原因,并指引补充镜像。
升级方式:用新 exe 覆盖旧版即可,plans.json / settings.json / 根证书全部保留,无需重新配置。