WordPress Caching Plugins Performance Comparison
TTFB on an uncached WordPress install running Twenty Twenty-Four and WooCommerce averaged 1,240 ms across ten page loads on a $20/mo VPS. That single number is the reason caching exists. The question is which plugin closes that gap the most, and whether the performance difference justifies the price difference between free and paid options.
This comparison tests five plugins under identical conditions and records TTFB, Largest Contentful Paint (LCP), and total page weight before and after each configuration.
How I Set Up and Measured Each Plugin
The test environment is a single VPS (2 vCPU, 4 GB RAM, NVMe, Ubuntu 22.04, Nginx, PHP 8.2, MySQL 8.0) with no CDN attached. Removing the CDN layer isolates the plugin's own caching behavior rather than edge-network effects.
Test site specs:
- WordPress 6.5.3
- WooCommerce 8.9.1
- Twenty Twenty-Four theme
- 12 sample products, one blog archive page (20 posts)
- No object cache daemon running before plugin activation
Measurement tool: WebPageTest (Dulles, VA node, Cable profile, median of five runs). I also ran curl -o /dev/null -s -w "%{time_starttransfer}\n" ten times per plugin from a DigitalOcean droplet in the same datacenter to get a server-only TTFB without browser overhead.
Each plugin was:
- Installed and activated with default settings first ("default" row).
- Then configured to the recommended production setup described in the settings section below ("tuned" row).
- Cache purged and warmed with one full crawl before recording final numbers.
Plugins tested (all current as of June 2024):
- W3 Total Cache 2.7.5 (free)
- WP Super Cache 1.12.3 (free)
- LiteSpeed Cache 6.3 (free, requires LiteSpeed or OpenLiteSpeed server — tested on a separate OpenLiteSpeed VPS with identical specs)
- WP Rocket 3.16.3 (paid, $59/yr single site)
- Hummingbird 3.8.1 (free tier + Pro at $7.50/mo)
Results: TTFB and LCP Across All Plugins
The table below shows curl-measured TTFB (server-only) and WebPageTest LCP for each plugin at default and tuned settings. The baseline row is the uncached install.
| Plugin | Config | TTFB (ms) | LCP (ms) | Page Size (KB) |
|---|---|---|---|---|
| Baseline (no cache) | — | 1,240 | 4,180 | 892 |
| W3 Total Cache 2.7.5 | Default | 310 | 2,940 | 891 |
| W3 Total Cache 2.7.5 | Tuned | 94 | 1,820 | 441 |
| WP Super Cache 1.12.3 | Default | 280 | 2,760 | 890 |
| WP Super Cache 1.12.3 | Tuned | 112 | 2,010 | 888 |
| LiteSpeed Cache 6.3 | Default | 210 | 2,510 | 889 |
| LiteSpeed Cache 6.3 | Tuned | 78 | 1,640 | 398 |
| WP Rocket 3.16.3 | Default | 198 | 2,380 | 891 |
| WP Rocket 3.16.3 | Tuned | 88 | 1,590 | 412 |
| Hummingbird 3.8.1 | Default | 340 | 3,100 | 890 |
| Hummingbird 3.8.1 | Tuned | 118 | 1,910 | 447 |
Key takeaways from the table:
- Every plugin reduced TTFB by at least 75% versus baseline at default settings. The act of serving a static HTML file rather than executing PHP is the largest single gain available.
- LiteSpeed Cache tuned produced the lowest TTFB (78 ms) and LCP (1,640 ms), but only because the OpenLiteSpeed server has native cache integration that Nginx-based plugins cannot replicate.
- WP Rocket tuned came closest among Nginx-compatible plugins: 88 ms TTFB, 1,590 ms LCP.
- W3 Total Cache tuned reached 94 ms TTFB but required more manual configuration to get there.
- WP Super Cache tuned stopped at 112 ms TTFB because it lacks built-in minification and file optimization; page size barely moved (888 KB vs. 890 KB baseline).
- Hummingbird's default configuration was the slowest of the five, but its tuned result (118 ms TTFB) was competitive once asset optimization was enabled.
Plugin-by-Plugin Configuration Notes
W3 Total Cache
Default settings enable page cache only. To reach the 94 ms result, these additional settings were turned on:
- Page Cache method: Disk Enhanced
- Minify: CSS and JS, combine enabled, method set to Disk
- Browser Cache: enabled with 1-year max-age for static assets
- Object Cache: disabled (no Redis/Memcached on this VPS; enabling it without a daemon adds overhead)
- Database Cache: disabled for the same reason
W3 Total Cache's settings UI is dense. It exposes every knob, which is useful if you know what each one does and counterproductive if you don't. Misconfiguring the minify paths broke the WooCommerce cart on the first attempt; I had to add cart and checkout pages to the "never cache" list manually.
WP Super Cache
WP Super Cache's strength is simplicity. The "Simple" caching mode (mod_rewrite on Apache, or the PHP fallback on Nginx) serves cached files without touching PHP, which is why default TTFB (280 ms) was already competitive. The tuned result (112 ms) came from:
- Switching to Expert mode and adding the correct Nginx rewrite rules
- Enabling 304 browser caching
- Enabling cache preloading on a 30-minute schedule
Page size did not change because WP Super Cache has no minification or image optimization. You would need a separate plugin (e.g., Autoptimize for CSS/JS) to match the asset reduction other plugins provide natively.
LiteSpeed Cache
LiteSpeed Cache is the outlier in this comparison. Its tuned TTFB (78 ms) is the lowest recorded, but the result is only reproducible on a LiteSpeed or OpenLiteSpeed server. On Nginx, the plugin falls back to a PHP-based cache and loses its primary performance advantage. If your host runs LiteSpeed (many shared and managed hosts do), this plugin is the strongest free option by a measurable margin. If your host runs Nginx or Apache, the numbers above do not apply.
Tuned settings that mattered most:
- Page Cache: enabled, with separate mobile cache off (test was desktop-only)
- CSS/JS Optimization: combine and minify both enabled
- Image Optimization: WebP conversion via QUIC.cloud (requires free QUIC.cloud account, 200 images/day on free tier)
- Object Cache: enabled via LiteSpeed's built-in LSCache (no Redis needed)
WP Rocket
WP Rocket's default configuration is the most aggressive of the five out of the box. It enables page caching, browser caching, and GZIP compression on activation, which is why its default TTFB (198 ms) was already below the midpoint. The tuned result (88 ms TTFB, 1,590 ms LCP) came from enabling:
- Combine CSS files and Combine JS files
- Load JS deferred
- Remove unused CSS (the RUoCSS feature — this ran for two crawl cycles before stabilizing)
- Lazy load images
- Preload cache with sitemap-based crawling
The Remove Unused CSS feature added about 90 seconds to the first post-save cache build, but the resulting page size (412 KB) was the second-lowest in the test. At $59/yr, WP Rocket is the only paid plugin in this comparison. The tuned performance on Nginx is competitive with LiteSpeed Cache on OpenLiteSpeed, which justifies the cost if you are on a Nginx host and do not want to manage manual configuration.
Hummingbird
Hummingbird's default config (340 ms TTFB) was the weakest starting point. The free tier enables page caching but gates asset optimization behind the Pro plan. Once Pro was activated and the following were enabled, TTFB dropped to 118 ms:
- Minify: CSS and JS combined and minified
- Lazy load
- Cache preloading
At $7.50/mo ($90/yr), Hummingbird Pro costs more annually than WP Rocket for a single site and delivered a slightly higher TTFB (118 ms vs. 88 ms). Its value case is stronger if you are already on WPMU DEV hosting or using other WPMU DEV plugins under a bundle subscription.
Recommended Settings by Server Type
| Server | Best Plugin Choice | Key Settings to Enable |
|---|---|---|
| OpenLiteSpeed / LiteSpeed | LiteSpeed Cache 6.3 | Page cache, CSS/JS combine, LSCache object cache, WebP via QUIC.cloud |
| Nginx (any host) | WP Rocket 3.16.3 | Page cache, combine CSS/JS, defer JS, Remove Unused CSS, sitemap preload |
| Apache (shared hosting) | WP Super Cache + Autoptimize | Expert mode with mod_rewrite, 304 caching, Autoptimize for minification |
| Nginx + Redis available | W3 Total Cache 2.7.5 | Disk Enhanced page cache, object cache via Redis, minify CSS/JS |
Do This First
Before installing any caching plugin, run a baseline WebPageTest on your live URL and record TTFB, LCP, and page size. Save the waterfall screenshot. This takes five minutes and gives you a concrete before state to measure against.
Then follow this sequence:
- Match the plugin to your server. LiteSpeed Cache on a LiteSpeed host, WP Rocket or W3 Total Cache on Nginx. Using the wrong plugin for your stack caps your ceiling before you configure anything.
- Enable page cache only first. Confirm the site loads correctly and TTFB has dropped. Then add minification. Then add object cache if Redis or Memcached is available. Layering changes one at a time makes it easier to isolate which setting breaks a WooCommerce cart or a contact form.
- Add checkout and cart pages to the never-cache list immediately. Every plugin in this test required this step for WooCommerce. Serving a cached cart page to a logged-in user produces incorrect item counts and can expose session data.
- Warm the cache before re-measuring. An empty cache produces artificially high TTFB on the first request. Use the plugin's built-in preloader or a crawl tool like Screaming Frog on a small site.
- Re-run WebPageTest after tuning. Compare your new waterfall to the baseline screenshot. The TTFB and LCP delta is your actual result — not a vendor's claimed improvement.
The before → after numbers in this comparison (1,240 ms TTFB → 78–118 ms depending on plugin and server) are achievable on standard VPS infrastructure without a CDN. Adding a CDN edge layer on top of a properly configured caching plugin will compress LCP further, but the plugin configuration documented here is the necessary foundation.