站长工具报出的死链,有一部分并不是真的失效,而是缓存或中间层保留了旧状态造成的假象。判断的关键是:不要只看工具的一次报告,而是用带随机参数的请求、不同网络环境和源站日志去交叉验证。如果同一条URL在多次独立请求中返回的状态不一致,缓存干扰的可能性就很大。
站长工具通常把返回404、410或长时间无响应的URL列为死链。但工具的数据来源可能是上一次抓取、CDN边缘节点缓存,或你自己浏览器的本地缓存。这三种情况的排查方式不同。
适用前提是:你确认过源站文件或路由确实存在或确实已删除。如果源站本身配置错误,那就不是缓存假象,而是真实死链。
最直接的做法是在URL后面加一个无意义的查询参数,让缓存层认为这是一个新请求。例如原URL是:
https://example.com/old-page
改成:
https://example.com/old-page?cachebust=20240601
如果带参数返回200,不带参数返回404,说明缓存层可能按完整URL做了区分,旧路径的缓存未更新。如果两者都返回404,那这条链接大概率真的失效了。
注意:这只是一种诊断手段,不要把这个参数写进站点地图或内链。它只用于临时验证。
用浏览器开发者工具或命令行查看响应头,重点看以下几项:
Cache-Control:是否设置了较长的max-age或s-maxage。Age:大于0说明响应来自缓存,数值是已缓存秒数。X-Cache或类似字段:部分CDN会标明HIT或MISS。Last-Modified与ETag:用于判断缓存是否还能协商更新。如果Age很大,而源站刚刚修改过,那么你看到的404很可能是旧缓存。此时需要到CDN控制台刷新对应URL,或等待缓存过期。
单次请求不足以定论。可以按下面步骤执行:
curl -I,只看响应头不看页面内容。判断结果:如果源站日志里没有这次请求的记录,说明请求被CDN或代理拦截并直接返回了缓存响应。如果源站日志有记录且返回404,那就是源站真实状态,不是缓存假象。
当带随机参数的请求、不同网络请求和源站日志三者结果一致时,才能确认这条链接的真实状态。如果确认是缓存造成的假象,下一步是刷新CDN缓存或调整缓存规则,然后重新在站长工具中提交验证。如果确认是真实死链,下一步才是设置301跳转或更新内链。
不要因为一次工具报告就批量删除链接。先按上面的方法抽样验证几条,确认缓存干扰的比例,再决定处理范围。