检查派生文件是否过期
Derivation-Order Staleness Check
核对生成顺序和输入版本,确认派生结果对应当前来源。
以下示例与示意结果由本站编写,用于说明方法,不是模型实测结果。
使用场景
一个搜索索引由目录元数据与双语正文生成。复制操作可能保留修改时间,但正文已变化,旧索引仍可能被误认为最新。教学依赖清单包含 metadata.json、正文目录、生成器版本和相关配置;来源展示的是远程缓存验证器,本例把核对来源是否变化的思路用于本地派生文件。
具体做法
列清实际影响输出的依赖,生成时记录它们的内容指纹及生成器/配置标识。使用索引前重算并比较;任何重要依赖不匹配就重生成并校验。只对相符的依赖关系复用结果,不能因为时间戳没变或文件存在就宣布最新。散列表示内容身份,不验证正文含义正确。
反例
复制上述索引后,只看修改时间没变就认为它对应当前正文。生成器或配置改了也继续复用旧索引。
改进写法
为上述索引记录 metadata.json、每份实际消费的双语正文、生成器版本和相关配置的指纹。使用前重算并与生成记录比较:任一不同,先按依赖顺序生成索引并校验;全部一致才复用。不要用保留的文件时间替代内容比较。无法读取依赖时报告未核验,不声称索引最新。
为什么这样改
时间戳可能被复制、恢复或粗粒度记录,不能可靠说明当前输入身份。把派生结果绑定到实际依赖,让上游变化有明确失效路径;完整依赖清单也避免只检查正文却漏掉生成器。
如何验证
教学检查:先生成索引并保存依赖指纹;改一份正文但保留时间戳,再运行一致性检查,应检出差异并要求重生成。只改变影响输出的配置,也应触发失效。
示意报告写明哪个依赖不匹配与下一生成步骤,不写虚构散列值。全部字节一致只支持复用条件,不证明搜索结果语义正确。
适用边界
遗漏依赖会使指纹检查失效;非确定性生成还需处理其输入来源。本地内容散列与来源中的 ETag/Last-Modified 是不同验证机制,不能把任意 ETag 当字节散列,也不能把一次缓存命中当永久最新。