
You hit publish on a post, flush your cache, and check the front end. Half the time, the old version is still there. Or worse: the homepage updated but the category archive didn’t. Or the mobile cache cleared but desktop didn’t.
Most solo operators assume cache plugins work the same way. They don’t. The three most popular WordPress caching solutions—WP Rocket, W3 Total Cache, and LiteSpeed Cache—handle purge logic, CDN sync, and object invalidation completely differently. And if you’re running a content site where every minute of stale cache costs you click-through or ad impressions, those differences matter.
Here’s what actually happens when you click “clear cache,” broken down by plugin.
WP Rocket: instant page cache, delayed object cache
WP Rocket clears page cache immediately when you publish or update a post. That means the single post URL, homepage, and any archive that post appears on get purged within seconds.
But if you’re using Redis or Memcached for object caching, WP Rocket doesn’t touch it. Object cache stores database query results, widget output, and navigation menus. If you update a menu item or change a widget, the page cache clears but the object cache doesn’t—so your navigation still shows the old link until the object cache TTL expires (usually 12–24 hours by default).
The workaround: manually flush object cache from your hosting dashboard or install a separate plugin like Redis Object Cache and set a shorter TTL (3–6 hours). WP Rocket won’t do it for you.
WP Rocket also integrates with Cloudflare’s API to purge CDN cache automatically. It works, but there’s a 30–90 second delay between WordPress purge and Cloudflare purge. If you’re checking your site immediately after publish, you’ll see stale content. Wait two minutes, or purge Cloudflare manually from their dashboard.
W3 Total Cache: granular control, manual overhead
W3 Total Cache gives you separate toggles for page cache, object cache, database cache, browser cache, and CDN. That’s powerful, but it also means nothing clears unless you’ve configured it to.
By default, publishing a post clears that post’s page cache and the homepage. It does not clear category archives, tag archives, or related post widgets unless you enable “purge all caches on post publish” in settings. That setting works, but it’s overkill—it nukes the entire page cache, including evergreen pages that didn’t change.
Better approach: enable selective purge for post archives, categories, and tags. You’ll find this under Performance > Page Cache > Purge Policy. Check the boxes for “front page,” “post page,” “categories,” and “tags.” Skip “all pages” unless you’re running a small site (under 100 pages).
For object cache, W3 Total Cache will clear Redis or Memcached—but only if you enable “flush object cache on post publish” in the same purge policy menu. It’s off by default.
CDN purge is manual unless you’re using a supported CDN like Cloudflare, StackPath, or BunnyCDN. You’ll need to enter API credentials under Performance > CDN and enable automatic purge. Even then, expect 60–120 second lag.
LiteSpeed Cache: instant everywhere, but only on LiteSpeed servers
LiteSpeed Cache is the fastest of the three—if you’re on LiteSpeed web server hosting (like BigScoots, Hostinger, or A2 Hosting). It uses server-level cache instead of PHP-based cache, so purges happen in under five seconds.
When you publish a post, LiteSpeed Cache clears the post itself, homepage, relevant archives, and any widget areas that reference the post. It also purges object cache (if enabled) and triggers CDN purge via API (Cloudflare and Quic.cloud supported).
The catch: it only works on LiteSpeed servers. If you’re on NGINX or Apache, the plugin installs but doesn’t cache anything. You’ll see “LiteSpeed Cache is not running” in the dashboard. In that case, switch to WP Rocket or W3 Total Cache.
One non-obvious LiteSpeed quirk: mobile cache is separate from desktop cache. If you enable mobile-specific caching (recommended for ad-heavy sites), you need to manually flush mobile cache from the LiteSpeed dashboard. It won’t auto-purge on post publish unless you enable “purge all on publish,” which—again—is overkill.
What to do if cache won’t clear
If you’ve flushed cache and the old version persists, check these in order:
- Browser cache. Hard refresh (Cmd+Shift+R on Mac, Ctrl+Shift+R on Windows). Your browser caches pages locally even if server cache is clear.
- CDN cache. Log into Cloudflare, BunnyCDN, or your CDN dashboard and purge manually. Most cache plugins don’t purge CDN by default.
- Object cache TTL. If Redis or Memcached is enabled, check your TTL setting. Anything over 12 hours is risky for frequently updated sites.
- Hosting-level cache. Some hosts (WP Engine, Kinsta, Flywheel) run their own server cache layer that sits above your plugin. You need to purge it from their dashboard or WP Admin bar.
Which plugin to use
If you’re on LiteSpeed hosting: use LiteSpeed Cache. Nothing else is faster.
If you’re on shared hosting or VPS with Apache/NGINX and want zero config: use WP Rocket. It’s $59/year, but it works out of the box.
If you want granular control and don’t mind spending 20 minutes in settings: use W3 Total Cache. It’s free, and once configured, it’s rock-solid.
Whatever you pick, test it. Publish a draft post, flush cache, and check the homepage, category page, and post URL on desktop and mobile. If any of them show stale content after two minutes, your purge logic isn’t working.
Got a caching quirk that’s costing you traffic? Reply to this email—I’ll dig into it for a future piece.
