用死链修复工具检测到某个链接返回 404,并不代表服务器现在真的返回 404。你看到的可能是浏览器缓存、CDN 边缘缓存、页面缓存插件或搜索引擎快照留下的旧结果。排除缓存假象的核心方法是:绕过缓存重新请求原始响应,再与工具结果对比。只要两次结果不一致,就说明你面对的是缓存层,而不是真实死链。
死链修复工具通常只是发起 HTTP 请求并记录状态码。它拿到的结果经过的环节越多,越容易失真。常见缓存层包括:
判断依据是:缓存造成的假象通常表现为“工具报错、手动访问正常”或“手动访问报错、换网络后正常”。如果所有网络、所有工具都返回同一状态码,才更可能是真实死链。
最直接的排除手段是让请求地址变得“未被缓存过”。在 URL 后追加一个无意义的查询参数,例如 ?cachebust=20240101,再重新检测。
?v=任意数字(若原链接已有参数,则用 &v=任意数字)。适用条件是:你能控制或影响该链接所在站点的缓存。如果链接指向第三方站点,你只能确认“对方缓存了旧结果”,无法直接清理,应改为联系对方或等待其缓存过期。判断结果是:带参数正常、原地址异常,基本可判定为缓存假象;两者都异常,则倾向真实死链。
HTTP 响应头比页面内容更可靠。用命令行工具请求原始地址,观察以下字段:
Age:大于 0 说明响应来自缓存,数值是缓存时长。X-Cache、CF-Cache-Status、X-Cache-Status:常见缓存命中标识,值为 HIT 时表示命中。Cache-Control:若包含较长的 max-age,说明该地址会被缓存较久。Last-Modified 与 Date:两者差距过大,提示内容可能是旧的。这些字段不是所有服务器都会返回,缺失时不能反推“没有缓存”。它们只是辅助证据。若看到 HIT 或较大的 Age,再结合带参数请求的结果,就能较有把握地定位到缓存层。
定位到缓存层后,处理方式取决于你能否操作该层:
清理后不要只看一次结果。用同一个死链修复工具、同一条原始地址、至少两个不同网络环境各测一次。两次都返回 200,才算缓存假象已排除。如果清理后仍返回 404,应回到源站检查文件、路由规则或重定向配置,而不是继续怀疑缓存。
建议在修复清单里给每条链接标注三项证据:原始状态码、带参数状态码、响应头是否命中缓存。三项组合可以给出较清晰的判断:
这样记录的好处是,后续复查时能直接看出当时判断的依据,避免把已经修复的缓存问题反复当成死链处理。
下一步:挑出工具报告里状态最可疑的一条链接,按上面的方法做一次带参数请求和响应头检查,把两项结果写进你的修复记录,再决定是清缓存还是改链接。