SuperAPI AI 工具集

content-hash-cache-pattern

通用与其它

查看项目

更新于 10-15 21:09

技能介绍

用途:为文件处理流水线(PDF 解析、OCR、文本提取、图像分析等)缓存昂贵结果。以文件内容而非路径作为缓存键,文件移动或重命名仍命中缓存,内容变化则自动失效,无需索引文件。

主要能力:compute_file_hash 分块读取文件(_HASH_CHUNK_SIZE = 65536)计算 SHA-256;CacheEntry 为 frozen、slots 的 dataclass,保存 file_hash、source_path 与缓存结果;缓存以 {hash}.json 存储,按哈希 O(1) 查找;extract_with_cache 服务层负责查缓存、提取、写缓存,处理函数保持纯净;缓存损坏时返回 None 视为未命中,下次重新处理。

使用方式:在服务层先算哈希,命中则直接返回缓存文档,未命中则调用纯提取函数并写入缓存;支持 cache_enabled 开关,便于提供 --cache/--no-cache 选项;cache_dir.mkdir(parents=True) 在首次写入时惰性创建目录;日志记录命中/未命中并截断哈希便于调试。

适用场景:批处理中同一文件跨多次运行重复出现;为已有纯函数添加缓存而不修改其实现;需要缓存开关的 CLI 工具。

限制:不适用于必须始终最新的实时数据;缓存条目过大时应考虑流式处理;结果若依赖文件内容之外的参数(如不同提取配置),该模式不适用。避免路径缓存、在处理函数内混入缓存逻辑,以及用 dataclasses.asdict() 序列化嵌套 frozen dataclass。