当源站响应正常、但边缘节点返回错误或旧内容时,先别急着改配置或换主机。应保留三类证据:源站直连的响应记录、边缘节点返回的完整响应头与状态码、以及两者在同一时间窗口内的对比样本。这些证据能帮你判断是缓存层、回源链路还是节点本身的问题,也决定接下来该保留现状、改写规则还是退出当前节点。
源站正常只说明后端应用和数据库这一层能返回正确内容。边缘节点是另一段独立链路,它可能缓存了旧版本、回源时走了不同线路、或者节点上的配置与应用预期不一致。两者是不同环节,一个正常不能推出另一个正常。
判断的关键是区分“内容错误”和“链路错误”。如果边缘返回的是旧页面,多半是缓存问题;如果返回 5xx 或连接中断,而源站直连正常,则更可能是回源或节点故障。这个区分决定了你该保留缓存证据还是链路证据。
源站侧证据的作用是证明“后端此刻能给出正确结果”,它是后续对比的基准。
Date、Last-Modified、ETag、Cache-Control。保留这些字段的原因是可复查:当边缘节点返回的 Last-Modified 或 ETag 与源站不一致时,就能定位到缓存副本与源站版本脱节,而不是笼统地说“内容不对”。
边缘侧证据要能回答“节点到底返回了什么、它认为自己在做什么”。
Age、Via、X-Cache 一类缓存标记,以及 Server。Age 较大且内容偏旧,通常指向缓存未及时更新;状态码为 5xx 且没有缓存标记,则更可能指向回源失败。这两类证据导向的处理动作不同。
单独看源站记录或边缘记录都不够,必须做时间对齐。做法是:在相近时间点分别请求源站直连地址和边缘地址,记录两次请求的时间戳与响应头,然后逐字段比对。
假设一个场景:源站在 10:00 返回 200 且 ETag 为 A,边缘在 10:01 返回 200 但 ETag 为 B 且 Age 为 3600。这种组合说明边缘持有一份较旧的缓存副本,而源站已经更新。此时应保留缓存规则相关的证据,而不是去排查源站应用。反过来,如果边缘返回 502 而源站直连正常,Age 字段缺失,证据就指向回源链路中断,此时保留节点与回源配置信息更有价值。
这个对比方法的价值在于,它把“哪个环节出错”从猜测变成可验证。数字只是示例,实际以你自己的记录为准。
证据齐了之后,决策取决于异常的性质。
一个实际动作是:先把上面两类响应头按时间对齐存成一份对比记录,再根据差异字段决定下一步。如果差异集中在缓存标记,就先查缓存规则;如果差异集中在状态码和连接,就先查回源链路。这个动作的结果直接决定你是改规则还是换节点,避免在错误方向上反复调整。