网站死链检测,怎样排除缓存造成的假象
📍 WDQWDWQD987AAAAA:216.73.216.217
📱 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
🔗 /dc14ee4e9d35.html
📄
网站死链检测,怎样排除缓存造成的假象
网站死链检测时遇到缓存造成的假象,核心判断方法是:同一URL用不同方式请求,看返回状态码是否一致。如果浏览器显示404、但服务器日志或命令行请求返回200,多半是浏览器、CDN或中间层缓存了旧响应。排查顺序应从客户端缓存开始,逐层向上验证到源站。
先确认假死链出现在哪一层
缓存假象可能来自浏览器、代理服务器、CDN边缘节点或源站应用缓存。不同层的表现不同,需要用对应工具分别验证。
- 要查什么:浏览器是否命中本地缓存。打开开发者工具的Network面板,勾选Disable cache后刷新页面。
- 怎么查:观察该URL的Status列和Size列。如果Size显示“from disk cache”或“from memory cache”,说明响应来自本地。
- 结果说明什么:禁用缓存后返回200,说明原检测结果是被浏览器缓存污染的假死链;仍然返回404,则问题不在浏览器层。
用命令行绕过浏览器缓存复测
命令行工具不读取浏览器缓存,能拿到更接近源站的响应。常用方式是curl或wget。
curl -I -H "Cache-Control: no-cache" https://example.com/page
- 要查什么:响应头中的状态码、
Age、X-Cache、CF-Cache-Status等字段。
- 怎么查:加
-I只取头部,加-H "Cache-Control: no-cache"要求中间层回源。
- 结果说明什么:状态码200且
Age为0或很小,说明源站正常,之前的404来自缓存;状态码仍为404,说明源站本身已删除或重命名该资源。
检查CDN与反向代理的缓存规则
CDN和反向代理常按扩展名、路径或Cache-Control头决定缓存时长。死链检测工具如果命中边缘节点,可能读到过期副本。
- 要查什么:该URL是否被CDN缓存,缓存TTL多长。
- 怎么查:查看响应头中的缓存标识字段,或在CDN控制台对该URL执行刷新/清除缓存,然后重新检测。
- 结果说明什么:清除缓存后返回200,说明是CDN缓存了旧响应;清除后仍为404,说明需要检查源站文件是否存在。
注意:清除缓存只影响该节点或该URL,其他边缘节点可能仍有旧副本。批量检测前先确认缓存刷新是否已全节点生效。
区分真实死链与缓存假象的判断清单
以下清单按顺序执行,每步都能缩小范围。
- 换网络环境:用手机热点或另一台设备访问同一URL。结果不同,说明原环境存在本地或运营商缓存。
- 加随机查询参数:访问
https://example.com/page?t=123456。返回200而原URL返回404,说明原URL被缓存,源站资源仍在。
- 查看服务器访问日志:确认检测时间点是否有请求到达源站。没有记录,说明请求被中间层拦截或缓存;有记录且状态为404,说明源站确实返回了404。
- 对比robots.txt与站点地图:robots.txt的抓取限制不等于可靠的索引移除,站点地图也不保证收录。它们不能作为死链是否存在的判断依据,只能辅助确认URL是否被允许抓取。
- 检查HTTPS与重定向链:HTTPS不保证安全无漏洞或排名。重点看是否存在301/302跳转链,跳转链中的某一环返回404也会被检测工具记为死链。
不同搜索引擎需要分别核查
各搜索引擎对缓存的处理和抓取频率不同,一个引擎显示死链,不代表其他引擎也如此。应分别用各搜索引擎的URL检查工具或抓取测试功能验证,不要用单一结果推断全局。如果多个引擎在同一时间点都返回404,且命令行请求源站也是404,才可以判定为真实死链。
下一步:选定一个疑似假死链的URL,按上述清单从浏览器禁用缓存开始,逐层执行到源站日志核对,记录每层返回的状态码,再决定是清除缓存还是修复链接。