Following up with what’s beginning to sound like a familiar refrain, I think the fix I put in for this has done the trick (hopefully for real this time)! Please do drop a note below if you’re still seeing a homepage that lacks the latest story, but hopefully we’re good to go!
Details for the technically minded and/or curious
I implemented the mu-plugin and it appears to be doing what it’s supposed to be doing—forcing an nginx fastcgi cache invalidation for the homepage URL anytime there’s a new post. That way, we avoid the situation described above where Cloudflare reaches back to nginx and winds up fetching the old version of the homepage from nginx’s cache.
This kind of cache invalidation is supposed to be automatically handled by the nginx helper wordpress plugin that we’re using (which is the glue that allows wordpress and nginx to communicate about nginx’s cache), and it usually works, but it’s been hard to track down why sometimes it doesn’t. It’s the most annoying kind of problem: the kind that’s intermittent and impossible to reproduce on demand.
Now, though, regardless of what the helper plugin does, our mu-plugin comes in after it’s finished and forces a homepage cache invalidation, whether one is needed or not. This should ensure that Cloudflare always has a fresh, up-to-date copy of the homepage waiting for it to pick up and send to visitors. Fingers crossed that this issue finally goes away!