Repository navigation
GitPort GitHub v0.4.1
GitPort GitHub v0.4.1
页面缓存重写 + 两轮全仓审计修复。单文件直接替换,重启实例后生效。
页面缓存:从「全站缓存 + 按网址定寿命」改成「只缓存列表页 + 按会话定寿命」
原来三个域的文档页一视同仁,寿命按网址分(仓库页 24 小时、列表页 5 分钟)。实际用下来两个问题:浏览型用法(搜索 → 点仓库 → 退回列表 → 再点)几乎全是新网址,缓存很少命中;而页面里最易变的那块数据决定整页寿命,按网址分档天生是钝器。
现在的规则:
- 只缓存 github.com 的列表页:搜索、issue/PR/commit/release 列表、通知、趋势、星标列表。仓库首页、文件浏览、单条 issue/PR/commit、设置页、raw/gist 一律不缓存——宁可每次回源,也不拿旧副本顶替。
- 寿命按会话算:连续浏览(导航间隔 ≤ 15 分钟)一直有效;离开超过 15 分钟,下一次进入整盘清空、从零开始。没有后台静默刷新:GitHub 的会话 cookie 每个响应都轮换,拿旧 cookie 去刷会被判成凭据泄露。
- 新建/编辑表单页不缓存(里面的防伪 token 会被轮换踢掉);验证页、未登录页一律不缓存——2FA 验证页是按你请求的网址回 200 的,不拦就会占住那个网址。
保留的边界:按账号分键(同机两个 GitHub 账号不串页)、按编码分键(gzip 页不会发给没声明 gzip 的客户端)、写完即删(评论/star 后相关页面立即失效)、F5 直通、手删缓存目录不报错、单页 2MB / 总量 200MB 上限。
审计修复
- 串发重试引擎补上测试(此前零覆盖);删掉隧道模式「双向都 <8KB 当风控」的启发式(304 与小响应都被误判,白挪游标还触发一次落盘);三处重复的「发送+记账」合并;连接池锁改自愈(一次 panic 不再让此后每次拨号都 panic)。
- 明文 HTTP 分块请求体回 501(原来剥掉 transfer-encoding,把块长度行当正文转发)。
- 校准日志措辞分级:镜像以 3xx/4xx 明确拒绝记「不支持」,超时/连接错误才叫「失败」。
- 校准模板样本换成实测有效资源:user-images 原样本已 403、media 指向非 LFS 文件 404,导致所有镜像(含自建 Cloudflare)在这两个域被误判「不支持」。
测试
66 个用例(v0.4.0 时 59 个)。新补:串发重试引擎、上行泵(2MB 请求体)、列表页判定的正反例、闸门页的写入侧与读侧、手删缓存目录自愈、gzip 条目读回链路、会话边界与换会话后键变化。
升级
单文件直接替换,重启实例。第一次进入会重建缓存(旧目录结构不兼容,自动清空);无需重新校准,但若设置页里这两个域此前显示「不支持」,重跑一次校准即可看到真实成绩。
下载:Assets 里的 gitport-github.exe(9.31MB,md5 fcd9ecc96e55530748b9c3daadf55643,2026-10-25 构建)。