Repository navigation
v1.1.3
v1.1.3 Release Notes
Bug 修复:ffprobe 缓存键精度丢失
internal/media/probe.go 中 getCacheKey 使用 string(rune(mtime)) 将 Unix 时间戳转为单个 Unicode 字符,导致不同修改时间的文件生成相同缓存键,造成缓存误命中或失效。
修复为 fmt.Sprintf("%s|%d", path, mtime),确保缓存键唯一。
性能优化
ffprobe 单次调用
probeCodecInfo 原先启动两个 ffprobe 进程分别获取视频和音频编码信息。合并为单次调用,使用 -select_streams v:0,a:0 -of json 一次获取所有编码信息,扫描时间减半。
正则黑名单预编译
Scanner 包中 IsBlockedString 对用户配置的正则规则每次匹配时重新编译。改为 sync.Map 缓存已编译的 *regexp.Regexp,匹配时直接复用。
前端 probeCache 扩容
probeCache 上限从 100 条提升至 500 条,减少大型媒体库浏览时对 /api/probe 的重复请求。
前端进度上报批量合并
reportProgress 改为 300ms 窗口批量合并机制,同一媒体 ID 只保留最新时间值,窗口到期后并发发送,减少 HTTP 请求次数。
CI 优化
重构 CI 工作流,引入 matrix 构建策略和 artifact 传递机制,提升构建效率。
验证
go test ./...✅ 全部通过go vet ./...✅ 无警告
影响评估
- 无 API 变更、无配置变更、无破坏性变更
- ffprobe 缓存键修复后,旧缓存条目自动失效,无需手动清理
- 前端 probeCache 扩容对内存影响极小(每条约 200 字节,总计 < 100KB)
发布日期: 2026-05-09