Repository navigation
Release v1.14.1
v1.14.1 — 大量节点性能与兼容性更新
性能优化
- 浅分页使用有界 Top-K 筛选,不再复制并排序所有匹配节点;仍返回精确总数,保留不分页调用。
- 先执行低成本筛选,按需解析解锁 JSON,规则只规范化一次;国家/分组/来源统计使用维护中的索引计数。
- 节点页不再消费高频任务进度状态,稳定列表回调;取消过时请求、保留乱序保护,250 ms 内完成事件合并刷新。
- 拖动列宽只移动预览线,不逐帧重绘整张表格。
- 智能分组预览共用一次候选快照和有效期 cutoff,保留统计、成员、排除原因和响应字段。
上游更新与兼容修复
- 合入上游至
f361753:保留 VMess/VLESS WebSocket 的 Host 之外请求头,修复 Gemini 页面可用标记识别。 - VMess 同时兼容 JSON 字符串和对象型 headers;未知扩展类型不会导致整条节点解析失败。
- 升级 regexp2 2.9.0、GeoIP2 2.5.0、React/React DOM 19.3.1 及相关 Go/i18n/开发依赖。
性能证据(合成测试,不代表所有部署)
Windows amd64 / Intel i5-10210U,50,000 合成节点,每页 50 条,两次基准均值:
| 场景 | 优化前 | 优化后 |
|---|---|---|
| 首页模型查询 | 41.1 ms | 14.5 ms |
| 名称排序 | 89.2 ms | 28.8 ms |
| 名称搜索 | 207.9 ms | 26.7 ms |
| 分组+解锁规则 | 142.2 ms | 32.0 ms |
| 首页内存分配 | 26.0 MB/op | 56.4 KB/op |
真实 Edge + mocked API、100 行测试:20 次进度事件的页面/表格重绘 11→0;10 个完成事件的列表请求 10→1;快速搜索取消旧请求且保留最新结果。选择、列宽保存、桌面/手机明暗主题检查通过。
兼容性和限制
- 相同主排序值现在按 ID 升序稳定排列;无效延迟/速度仍在末尾。
- 无数据库迁移或权限变化;保留智能分组、原生 Loon 及其他 fork 功能。
- 精确计数仍扫描缓存,深分页仍可能全量排序;不是 SQL 真分页。
- 客户端取消请求不保证后端计算同步中断。
-race未在本机运行(CGO/C 编译器不可用);不宣称已通过。
验证
全量 Go 测试、golangci-lint、前端 lint/生产构建、分页/筛选/并发缓存/排序/索引/智能分组回归测试均通过。前端存在既有非阻塞格式及构建警告。详见仓库中英文 CHANGELOG 和 development 文档。
Docker
ghcr.io/linux-jin/sublink-pro:v1.14.1
ghcr.io/linux-jin/sublink-pro:latest
支持 Linux amd64 / arm64 / armv7 / 386;另附 Linux、Windows、macOS 共 8 个二进制安装包。
English summary
- Bounded shallow pagination with exact totals, lazy unlock parsing, indexed counts and deterministic ID tie-breaking.
- Isolated progress rendering, cancellable stale list requests, coalesced completion refreshes and lightweight column-resize previews.
- Single candidate snapshot/cutoff for smart-group previews, without changing eligibility or response fields.
- Upstream sync through
f361753, VMess/VLESS WS header preservation, Gemini marker fixes and dependency updates; object-shaped VMess headers remain compatible. - No database migration or permission change. Synthetic benchmarks exclude network latency and do not guarantee production speedups. Deep pages still sort full matches; client cancellation is not server cancellation. Local race detection was unavailable.