WordPress without caching is slow. Every page request requires PHP to query the database, run the theme’s templates, and generate HTML from scratch. With caching, most requests get a pre-built HTML file served directly. The difference is 2–5x faster page loads for typical blogs.
This post is what caching actually does and how to set it up.
What caching actually does
Without caching:
- Visitor requests a page.
- WordPress runs PHP code.
- WordPress queries the database for posts, options, etc.
- The theme assembles the HTML.
- The HTML is sent to the visitor.
That’s 5 steps, hundreds of milliseconds, every request.
With caching:
- Visitor requests a page.
- The pre-built HTML file is sent.
That’s it. 50–100ms instead of 500–1500ms.
The four caching layers
1. Page caching (the biggest impact)
Stores a full HTML version of each page. Served directly to visitors. Skips WordPress entirely for cached pages.
This is the layer that matters most. Without it, the rest barely matter.
2. Browser caching
Tells the visitor’s browser to store images, CSS, and JavaScript locally. Repeat visits don’t re-download these files.
Reduces bandwidth and speeds repeat visits. Set via .htaccess or your caching plugin.
3. Object caching (advanced)
Caches database queries in memory using Redis or Memcached. Helps logged-in users, admin pages, and dynamic content that can’t be page-cached.
Useful for membership sites, e-commerce, and busy blogs with lots of admin work. Most blogs don’t need it.
4. CDN (content delivery network)
Stores copies of your static files (images, CSS, JS) on servers worldwide. Visitors get files from the nearest server, not your origin.
Useful for global audiences and image-heavy sites. Cloudflare (free tier) is the standard.
The caching plugins
WP Rocket (premium)
Cost: $59/year for one site.
Why it’s popular: works on activation. Sensible defaults. Includes page caching, browser caching, lazy loading, CSS/JS optimization, database optimization. All in one plugin.
Best for: bloggers who want set-and-forget. Most popular paid caching plugin.
W3 Total Cache (free + paid)
Cost: free version is functional. Pro version $99/year.
Why people use it: highly configurable. Granular control over what’s cached, where, and how.
Best for: technical users. The configuration overhead is real for beginners.
LiteSpeed Cache (free)
Cost: free, but requires LiteSpeed-compatible hosting (or works with QUIC.cloud).
Why people use it: the most powerful free option. Server-level caching when on LiteSpeed hosts.
Best for: if your host runs LiteSpeed. Many budget hosts do.
WP Super Cache (free)
Cost: free, maintained by Automattic.
Why people use it: simple, reliable, basic. Less features than the others.
Best for: simple blogs that want minimal configuration.
Host-built-in caching
Managed WordPress hosts (Kinsta, WP Engine, SiteGround, Cloudways) often include caching at the server level. Often more efficient than plugin-based caching.
If your host includes caching, you may not need a caching plugin at all (or only need it for browser caching and minor optimizations).
Basic configuration
Whatever plugin you choose, the basic settings to enable:
Page caching
On. Default in all major plugins. Verify it’s active.
Browser caching
On. Sets cache headers on static files.
Gzip / Brotli compression
On. Compresses files before sending to the browser. Smaller transfers, faster pages.
Lazy loading images
On. WordPress includes this natively, but most caching plugins add their own (you can disable WP’s native if the plugin’s is better).
CSS and JavaScript optimization
Minify (remove whitespace, comments) — safe to enable.
Combine (merge multiple files into one) — sometimes breaks things. Test before enabling.
Deferring or async JS — speeds up pages but can break some scripts. Test carefully.
Database optimization
Useful occasionally. Removes post revisions, trash, transients. Most plugins run this on a schedule.
Testing your cache
After setup:
1. Verify caching is working
Open your site in incognito mode. View page source. Look for a comment indicating caching (most plugins add one, e.g., “Cached by WP Rocket”).
2. Run PageSpeed Insights
Check before and after. You should see meaningful improvement, especially in Time to First Byte (TTFB) and Largest Contentful Paint (LCP).
3. Visit your site as a logged-out visitor
Make sure pages still look right. Caching can sometimes cause issues with personalized elements (showing “Welcome, [name]” to wrong users).
4. Test critical user paths
Try the contact form. Try commenting. Make sure caching isn’t breaking dynamic features.
When caching breaks things
Caching can cause issues. Common ones:
Logged-in users see public content
Make sure your plugin excludes logged-in users from page caching (default in most).
Comment moderation issues
New comments not appearing? Cache hasn’t been refreshed. Clear cache after moderating.
Cart / checkout issues (e-commerce)
Page caching shouldn’t apply to cart and checkout pages. Most caching plugins exclude these by default. Verify if you run e-commerce.
Form submission issues
If forms don’t submit, JS deferring might be the culprit. Disable JS optimization to test.
White screen after enabling
Combine-CSS or combine-JS can break themes. Disable these settings.
Cloudflare alongside caching
If you use Cloudflare (free tier is enough for most blogs):
- Cloudflare caches static files at its edge. Browser caching is now Cloudflare’s job too.
- Your WP caching plugin handles page caching at the origin.
- Both together is faster than either alone.
Specifically: in your caching plugin, configure it to flush Cloudflare’s cache when content changes. Most plugins have this integration built in.
Object caching setup
Only needed for high-traffic blogs or membership sites. Requires:
- Redis or Memcached available on your host. Most managed WordPress hosts include this.
- A plugin that integrates with it (Redis Object Cache, W3 Total Cache, etc.).
- Configuration in wp-config.php.
Skip until you actually need it.
The “don’t cache logged-in users” rule
Logged-in users see personalized content (admin bar, “Welcome, name,” etc.). Caching them serves the wrong content to the wrong user.
All major caching plugins exclude logged-in users from page caching by default. Don’t change this unless you know exactly why.
How to clear cache manually
Sometimes you need to force a cache refresh — after content updates, plugin changes, or theme tweaks:
- Most caching plugins add a “Clear cache” or “Purge cache” button to the WordPress admin bar.
- Major plugins auto-clear cache when you publish/edit posts.
- If using Cloudflare too, clear Cloudflare cache separately when needed.
The honest summary
Caching speeds up WordPress dramatically. Page caching matters most. Set up a caching plugin (WP Rocket if you want easy, LiteSpeed if your host supports it, host-built-in if available). Enable page caching, browser caching, gzip, and lazy loading. Be cautious with JS/CSS optimization — it can break things. Test after setup. Clear cache when content changes. Add Cloudflare for further speed. Skip object caching until you need it.
