两个站点接入同一个加速实例后,A 站偶尔打开显示 B 站的内容。第一次遇到会往复杂处想,其实漏掉的多是个小前提。

# 缓存键规则
$host$uri$args
# 刷新
curl -X POST https://cdn.example.com/purge -d '{"host":"a.example.com"}'

缓存键没有包含主机名,节点把不同站点的同路径资源当成同一份。这一点先确认清楚,后面就不用反复试。

「多域名缓存隔离」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。

动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。

先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。别只看报错的最后一行,往上看几行,真正的起因通常在上面。

具体做法是,缓存键加入主机名;按域名拆分配置;刷新时按域名分别提交。

改完照着核一遍,两个域名各返回自己的内容,无串站现象。

作者 9823189