现场是这样的。首页和列表页缓存 TTL 设了 7 天 想着省回源 结果发文后首页还是三天前的列表 蜘蛛来抓首页看不到新文章 新文只能靠 sitemap 被发现 收录慢了两天

中间走过弯路,把「缓存按 URL 存 列表分页各自独立过期」当成主因,改完现象没变。

真正麻烦的地方在于,几个原因的现象几乎一样。页面缓存 TTL 与内容更新频率不匹配;发文后没有主动 purge 首页和列表页;缓存层不识别后台发布事件。

先确认缓存年龄和过期时间

curl -sI https://www.example.com/ | grep -i -E 'age|cache-control'

发文后自动 purge 首页与相关列表

curl -X PURGE https://www.example.com/

接着把首页 TTL 降到 5 分钟

proxy_cache_valid 200 5m;

剩下的就是验证新文出现在首页 HTML 里

curl -s https://www.example.com/ | grep -c '新文章标题'

改之前先确认了最近有没有人动过配置,避免白查一遍。

别只看报错消失,验证要多做一步。发文后五分钟内首页可见 缓存命中率仍在 90% 以上 新文被抓取时间提前。

缓存 TTL 按访问价值算 首页这种天天变的位置 用短 TTL 比事后 purge 更稳。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。

作者 9823189