结论是:缺少创建时间时,不要补造时间,而要把清单拆成“可核验状态”和“待核验状态”两层,用最近一次可确认的观测时间作为维护基线。这样做的适用条件是:你手里至少有一份链接目标URL、来源URL和最近检查结果;如果连来源页面是否仍然可访问都无法确认,这套基线不成立,应先做一次全量可达性核验。
很多历史清单来自不同时期的导出文件,字段里只有来源页、目标页和是否有效。把文件导出日期填进创建时间,会让后续判断全部偏移:一个三年前上线、半年前才被记录的链接,会被误判为新增链接;一个早已被删除、但导出时仍显示有效的链接,会被误判为近期失效。
更稳妥的做法是区分三种时间:首次被记录时间、最近一次确认有效时间、最近一次确认失效时间。缺少创建时间时,维护基线应建立在后两者上,而不是建立在推测的创建时间上。首次被记录时间只能说明“从那时起进入你的视野”,不能说明链接何时出现。
第一层是已核验层:来源页可访问、链接指向正确、目标页返回正常。对这类记录,基线字段至少保留来源URL、目标URL、最近确认有效时间、确认方式。第二层是待核验层:来源页打不开、跳转异常、目标页内容已变化、或无法判断链接是否仍存在。待核验层不进入常规维护节奏,而是先进入一次集中排查。
这样分层的实际动作是:先对全量清单做一次可达性检查,把结果写入“最近确认有效时间”或“最近确认失效时间”;然后只对已核验层设定复查周期。复查周期的长短取决于来源页的更新频率和链接在页面中的位置,而不是取决于链接数量。导航、页脚、资源页上的链接通常比正文深处的链接更容易被改版影响,复查应更频繁。
假设你抽查了20条历史链接,发现其中18条在来源页正文中稳定存在,于是决定按季度复查全部链接。这个结论在小样本上成立,但规模化后可能失效:当清单扩展到包含大量聚合页、目录页和用户生成内容页时,来源页结构变化、页面被合并、板块下线都会让“正文中稳定存在”这个前提不再成立。此时季度复查会积累大量误报,维护动作被无效告警淹没。
反例的边界在于:如果来源页本身是低维护、结构稳定的静态页面,按季度复查可行;如果来源页属于频繁改版的栏目页或由模板驱动的列表页,就应把复查拆成“先确认页面结构是否变化,再确认链接是否仍在”,否则单看链接是否可访问会漏掉位置变化和上下文变化。
下一步不是继续补时间字段,而是先确定哪些记录值得进入维护基线。可以按以下顺序处理:
这个动作的结果会直接影响下一步:如果第一轮核验后待核验层占比很高,说明清单的历史质量不足以支撑常规维护,应先做来源页清理和去重;如果已核验层占比高,才适合进入按周期的复查。请求量或抓取量下降不能单独证明某条链接已被移除,页面改版、访问限制、临时故障都可能造成同样现象,需要结合来源页状态一起判断。
维护基线的最小可用形式,是每条记录都能回答三个问题:最近一次确认它有效或失效是什么时候、依据是什么、下一次什么时候复查。缺少创建时间并不妨碍回答这三个问题。真正妨碍维护的,是把“首次记录时间”误当成“创建时间”,再用它推导链接年龄和生命周期。
如果清单里连来源URL都不完整,或者来源页与目标页的对应关系已经无法还原,那么任何基线都只是表面完整。此时应先停止扩展新记录,把现有记录的可核验部分整理清楚,再决定是否继续维护。基线的作用是让下一次判断有依据,而不是让历史清单看起来更整齐。