404 not found 的意思是服务器明确回应:请求的这个地址当前没有对应资源。异常恢复后要判断是缓存过期还是真正修复,最可靠的做法不是刷新页面看结果,而是对同一 URL 连续发出带时间戳的请求,记录状态码、响应头和响应体的变化顺序,再决定下一步是继续修源站还是清理缓存层。
不要用首页或栏目页做判断,选那个曾经返回 404 的具体 URL,并记录三样东西:完整路径、请求方法、以及你请求时是否带了查询参数。查询参数会改变缓存键,带参数的 URL 和不带参数的 URL 可能命中不同缓存条目,混在一起看会得出错误结论。
观测动作:对同一 URL 连续请求,每次在查询串里加一个不同的无意义参数,例如 ?probe=1、?probe=2,让每次请求都绕过已有缓存。如果加参数后立刻返回 200,而不加参数仍返回 404,说明缓存层还留着旧的 404 记录,源站可能已经修好。这一步的结果直接决定你下一步是去清缓存,还是回到源站继续排查。
状态码本身不区分来源。真正有区分力的是响应头里的年龄类字段和缓存标记:如果响应带有表示已缓存时长的字段,且这个时长明显早于你最后一次修复的时间点,那这个 404 更可能是缓存副本,而不是源站当前状态。
注意:不同缓存实现暴露的字段名称不一样,不要凭记忆断言某个字段一定存在,以你实际抓到的响应头为准。
假设你在周一修复了某个页面的路由配置,周二复查时浏览器仍显示 404,但用命令行请求加随机参数后返回 200。这个组合只能说明“带参数的请求到达了源站且源站正常”,不能直接证明不带参数的请求也修好了。合理的解释至少有两种:一是缓存层仍保留旧 404;二是源站对不同参数做了不同处理,而你恰好测到了能通过的那条路径。
要排除第二种,把随机参数换成无参数请求,并观察响应头是否出现缓存命中标记。若出现且状态为 404,继续做缓存失效;若失效后仍 404,则问题回到源站。这个顺序能避免把清缓存当成万能动作。
单条 URL 的结论不能直接推广到全站。缓存过期时间、边缘节点分布、路由规则都可能按路径或目录分组,个别样本修好不代表同组其他 URL 也修好。规模化验证时,按目录或模板分组抽样,每组至少取几个不同层级的 URL,并分别记录带参数与不带参数的结果。
如果抽样中大部分恢复正常、少数仍 404,先检查这些少数 URL 是否共享某个特征,例如同一路由前缀、同一重定向规则或同一缓存标签。找到共同特征后,针对该特征做一次定向失效,再复测同一组样本,而不是全站清缓存。
每一步只改一个变量,是为了让下一次请求的结果能明确指向缓存层还是源站。若一次同时清缓存又改路由,即使页面恢复,你也无法判断真正生效的是哪一步,后续同类问题仍会重复出现。
抓取量回升、日志里 404 记录减少,都可能是缓存过期、抓取节奏变化或抽样偏差造成的,不能单独证明源站已修复。robots.txt 的限制也不等于可靠的索引移除,它只影响抓取行为,不改变 URL 本身是否可访问。站点地图提交不保证收录,HTTPS 也不保证页面可访问或排名。判断修复是否成立,最终仍要回到对同一 URL 的实际请求结果上,并以分组抽样确认影响范围。