文章发布两小时,订阅器里始终只有昨天那篇,手动打开 /feed/ 也是旧的,后台文章列表却显示已发布。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
add_action('save_post', function($id){
if (wp_is_post_revision($id)) return;
delete_transient('feed_cache');
if (function_exists('wp_cache_clear_cache')) wp_cache_clear_cache();
});
整页缓存把 /feed/ 当成普通页面存了十二小时,发布文章时只清了首页和文章页。feed 响应头也没带 Cache-Control,中间层会自己猜一个缓存时间。这一点先确认清楚,后面就不用反复试。
碰到「feed 缓存不更新」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。
改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。
具体做法是,把 feed 路径加入缓存的排除列表,带斜杠和不带斜杠两种写法都要加;发布和更新文章时主动清一次 feed 缓存,别只依赖过期;给 feed 响应加 no-cache 头,让阅读器每次都回源。
改完照着核一遍,发布后十秒内 /feed/ 就能看到新文章,阅读器刷新也立刻出现。
