sitemap.xml 的响应头里 Cache-Control 是 max-age=604800,新发的 9 篇文章七天都没出现在地图里,源站直接访问却是新的。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,CDN 把 XML 当静态文件套了默认的七天缓存,源站更新没有触发刷新。sitemap 的 URL 固定,没有版本参数,边缘节点一直发旧文件。

「sitemap CDN 缓存」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。

curl -I https://example.com/sitemap.xml
curl -I --resolve example.com:443:源站IP https://example.com/sitemap.xml
# 看 Age 和 Last-Modified

权限不要一口气开到最大,先加到够用再往上试,范围小才好收。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。

改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。

具体做法是,把 sitemap 的缓存 TTL 单独设成 10 分钟;发布文章后主动刷新 sitemap 的 URL;对比源站和 CDN 的 Last-Modified 确认一致。

最后用这个标准收尾,CDN 返回的 Last-Modified 与源站相同,新文章十分钟内出现在地图里。

作者 9823189