A caching plugin stores a built copy of your pages so WordPress does not have to run PHP and query the database for every visitor. That is the whole mechanism, and it is why caching is usually the single largest speed win available to a WordPress site. Below: what these plugins actually do, the pages they must never cache, and five free options with the page-load figures measured for this article.
This is an archive post from 2020
What a WordPress caching plugin actually does
Without caching, every visit means work: your server runs WordPress, WordPress queries the database, PHP assembles the HTML, and only then does the browser get something to render. Two people loading the same post cause that work to happen twice.
A page cache saves the finished HTML the first time and serves that copy to everyone after, skipping PHP and the database entirely. That is where the speed comes from. Most plugins in this category then layer on extras: browser cache headers, minification, GZIP compression, CDN integration, and cache preloading so the first visitor does not pay the cost of building the page.
One thing to check before you install anything: if you are on managed WordPress hosting, your host is probably caching at the server level already, and adding a plugin on top can cause stale pages rather than faster ones. Ask your host what they cache before you add a second layer.
What page caching breaks, and how to avoid it
Page caching works because the same HTML is correct for every visitor. The moment that stops being true, caching becomes a bug. Anything personalised — a logged-in dashboard, a form with a nonce, a cart — must be excluded.
The WooCommerce cart and checkout pages are the classic example. Their contents differ per visitor by definition, so serving a cached copy shows one customer another customer’s totals or an empty cart that will not update. Most competent caching plugins exclude the standard WooCommerce pages automatically — WP Rocket does, for instance — but you should verify it rather than assume it, and any custom cart, account or quote page you built yourself needs excluding by hand.
Worth knowing if you run a store: WooCommerce’s newer Cart and Checkout blocks move that dynamic content into Store API requests rather than the page HTML, which changes where the uncacheable part lives without making the checkout cacheable. WooCommerce block checkout vs shortcode: which to use covers that difference and what else changes when you switch.
Five free WordPress caching plugins, as tested in 2020
The five tested here, with page load measured using WebPageTest. Treat the ordering as a 2020 snapshot rather than a recommendation.
1. WP Super Cache

WP Super Cache comes from Automattic, the company behind WordPress.com and Jetpack. Its appeal is simplicity: you can turn caching on from one screen and be finished.
There are two configuration paths, Easy and Advanced. Easy is a single toggle. Advanced exposes CDN integration, cache exclusions, browser caching and cache preloading.


2. W3 Total Cache

W3 Total Cache has the most options of anything in this list, covering page cache, minification, database cache, object cache, opcode cache, fragment cache and CDN integration.

Every menu item has its own settings page, which is either the point or the problem depending on who you are. If you know what object cache and database cache mean and you want control over each layer, this is the one. If you do not, you will almost certainly misconfigure something, and one of the simpler plugins here will give you most of the benefit with none of the risk.
3. WP Fastest Cache

WP Fastest Cache sits between the two above: considerably simpler than W3 Total Cache, with more on offer than a single toggle. Page caching plus minification, file concatenation, browser caching, GZIP compression and cache preloading.

Setup is a list of checkboxes for the features you want. The Delete Cache and Exclude tabs are where you clear the cache and keep specific pages out of it — the Exclude tab is the one to visit if you run a store.
4. WP Rocket

The one paid plugin in this list, and the only one with no free version on WordPress.org. It turns page caching on the moment you activate it, with no configuration required.

Beyond page caching it covers minification and concatenation, cache preloading, browser caching, database optimisation, GZIP compression, deferred JavaScript, DNS prefetching and lazy loading. Whether that is worth paying for depends on how much configuration time you want to spend, because the free plugins above reach a similar place with more effort.
5. Cache Enabler

Cache Enabler comes from KeyCDN and is deliberately minimal. Three decisions and you are done: how long the cache lives, when it clears automatically, and what to exclude.

Being simple is not the same as being ineffective. For a content site with no store and no membership area, a plain page cache is most of what caching has to offer.
The 2020 page load results
| Configuration | Page load |
|---|---|
| No caching plugin | 2.742 s |
| WP Super Cache | 2.339 s |
| W3 Total Cache | 2.413 s |
| WP Fastest Cache | 2.310 s |
| WP Rocket | 2.355 s |
| Cache Enabler | 2.359 s |
That is the honest reading of the table, and it is the same conclusion most caching comparisons reach if they report their numbers rather than their preferences: the gap between having a page cache and not having one is large, and the gap between any two reasonable page caches is noise. Pick on configuration effort and on whether it handles your dynamic pages correctly, not on a tenth of a second.
Where to go from here
- WooCommerce caching plugins: what breaks and what works — the current version of this comparison, written around store exclusions
- WordPress INP: diagnose and fix a failing score — caching does not fix interaction latency, and this covers what does
- How to optimize images in WordPress without losing quality — usually the next largest win after a page cache
- WooCommerce block checkout vs shortcode — if the pages you are excluding from the cache are a store’s cart and checkout

Leave a Reply to This Post