排除缓存造成的假象,核心做法是先用“无缓存请求”验证源站真实响应,再回到带缓存的正常访问路径对比差异。如果无缓存请求返回的是旧内容或错误状态,问题在源站或虚拟主机配置;如果无缓存请求正常、普通访问异常,才可能是缓存层造成的假象。下面用一个假设例子说明具体操作。
假设你把站点从A主机迁到B主机,域名解析已指向新主机,但浏览器打开首页仍显示旧版内容,后台登录后看到的却是新数据。这时不要立刻断定“新主机没生效”或“缓存插件坏了”,因为至少存在三种解释:本地浏览器缓存、CDN或反向代理缓存、虚拟主机自身的页面缓存或对象缓存。需要逐层排除,而不是一次改多项设置。
可执行步骤如下:
curl -I -H "Cache-Control: no-cache" https://example.com/。这里的域名换成你自己的测试域名。Cache-Control、Age、X-Cache、CF-Cache-Status 等字段。若 Age 大于0,说明响应来自中间缓存;若没有这些字段,也不代表没有缓存,只能说明当前链路未暴露缓存标记。判断结果:无缓存请求返回新内容,而普通访问返回旧内容,优先处理缓存层;两者都返回旧内容,检查源站文件、数据库或DNS是否真正切换。常见错误是一次性清空浏览器缓存、CDN缓存、主机缓存和插件缓存,导致无法判断哪一层起了作用。
方案一:只清缓存,不改配置。适用于内容已更新、源站响应正确,仅因缓存过期时间未到导致旧页面可见。条件是你能确认源站返回的是新版本,且缓存层有明确的清除入口。若源站本身就是旧内容,清缓存只能短暂掩盖问题。
方案二:调整缓存规则或关闭缓存。适用于源站已正确,但缓存层反复返回旧内容,或缓存规则与登录态、动态页面冲突。条件是你能区分静态资源与动态请求,并愿意承担关闭缓存后的源站压力。若虚拟主机本身性能有限,长期关闭缓存可能让访问变慢,这时应改为缩小缓存范围,而不是全部关闭。
先记录一次无缓存请求的完整响应头和状态码,再与普通访问的响应头逐项对比。把差异字段和出现条件写下来,再决定是清缓存、改缓存规则,还是回到虚拟主机选择层面检查源站配置。这样处理,才能把“缓存造成的假象”和真实的主机问题分开。