feat(cache): enhance disk cache management with concurrency control and cleanup optimizations

This commit is contained in:
CaIon
2026-02-04 17:36:07 +08:00
parent 9ef7740fe7
commit e2ebd42a8c
8 changed files with 128 additions and 84 deletions

View File

@@ -258,16 +258,18 @@ func EstimateRequestToken(c *gin.Context, meta *types.TokenCountMeta, info *rela
// 如果文件类型未知且需要获取,通过 MIME 类型检测
if file.FileType == "" || (file.Source.IsURL() && shouldFetchFiles) {
mimeType, err := GetMimeType(c, file.Source)
// 注意:这里我们直接调用 LoadFileSource 而不是 GetMimeType
// 因为 GetMimeType 内部可能会调用 GetFileTypeFromUrl (HEAD 请求)
// 而我们这里既然要计算 token通常需要完整数据
cachedData, err := LoadFileSource(c, file.Source, "token_counter")
if err != nil {
if shouldFetchFiles {
return 0, fmt.Errorf("error getting file type: %v", err)
}
// 如果不需要获取,使用默认类型
continue
}
file.MimeType = mimeType
file.FileType = DetectFileType(mimeType)
file.MimeType = cachedData.MimeType
file.FileType = DetectFileType(cachedData.MimeType)
}
}