事情本身不复杂,线索都在日志里。首页发布后调了 Fastly 的 purge,只按 URL 清理,列表页和分类页仍挂着旧 HTML。surrogate-key 明明打了 home,清理接口返回 200,边缘节点六个小时后才自然过期。

第一反应是「服务开了 stale-while-revalidate,旧内容继续返回」,验证下来不成立。

把日志和配置对完,能解释这个现象的基本就这几处。purge 只清了首页 URL,没按 surrogate-key 批量清。也可能是回源响应头少了 Surrogate-Key,标签根本没生效。

少数情况下是清理请求打到了错误的 service id。

动手时先确认响应头里的 key

curl -sI https://www.example.com/ | grep -i surrogate-key

随后按 key 批量清理

curl -X POST https://api.fastly.com/service/$SID/purge -H "Fastly-Key: $TOKEN" -d 'home'

接着核对 service id 与域名

curl -s https://api.fastly.com/service/$SID/details -H "Fastly-Key: $TOKEN"

收短 stale 窗口

set beresp.stale_while_revalidate = 60s;

排查用的命令都是临时敲的,没有写成脚本,事后才整理。

改完先别撤,确认这几项。清理后所有带 home 标签的页面立刻返回新内容,回源日志里出现新的抓取记录。

补一句。按 URL 清理只覆盖一个地址,页面级缓存要靠 surrogate-key 分组,否则改版永远有漏网的节点。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。

作者 9823189