Best WordPress Caching Plugins 2026

LiteSpeed Cache vs WP Rocket vs FlyingPress — which caching plugin is actually fastest? Real performance data from an agency running 30+ sites.

Dobromir Dechev
Dobromir WordPress agency owner

Why caching matters more than your host thinks

Most hosting providers advertise caching as a solved problem. Enable it, walk away. The reality is more complicated.

Full-page caching serves pre-generated HTML to visitors, bypassing PHP and the database entirely. A cached WordPress page can be served in 15-30ms. An uncached page on the same server takes 300-800ms. That gap is the entire business case for caching.

But caching requires configuration. WooCommerce stores need cart exclusions. Logged-in users need their own cached pages or no cache at all. JavaScript optimisation requires understanding which scripts can be deferred and which will break if you touch them. Most caching plugins get 80% of this right out of the box and require manual tweaking for the remaining 20%.

After running 30+ production WordPress sites on various caching configurations, here is what actually works.


Quick comparison

PluginFull-page cacheObject cacheCSS/JS optimisationWooCommercePrice
LiteSpeed CacheYes (server-level on LS)YesYesYes (ESI)Free
WP RocketYesNo (separate plugin)YesYes€59/yr+
FlyingPressYesNo (separate plugin)Yes (per-URL CSS)Yes€70/yr+
W3 Total CacheYesYesYesManual configFree
WP Super CacheYesNoNoManual configFree

How WordPress caching works

WordPress has several caching layers, and understanding each one is necessary before evaluating plugins:

Full-page (page) cache: The entire HTML response is stored and served to future visitors without PHP execution. This is the most impactful caching layer - it eliminates 90%+ of PHP and database overhead for uncached visitors.

Object cache: WordPress stores computed values (database query results, expensive calculations) in memory for reuse within a single request. Without a persistent object cache (Redis or Memcached), this cache is discarded at the end of each PHP request. With a persistent cache, these values survive across requests.

Browser cache: HTTP headers tell the visitor's browser to store static files (images, CSS, JS) locally. Subsequent page loads skip downloading these files.

CDN cache: A content delivery network stores your static files on servers near your visitors. A visitor in London gets images from a CDN node in Frankfurt, not from your server in Singapore.

Caching plugins typically handle full-page cache, browser cache headers, and asset optimisation. Object caching is handled separately, either by the host (Kinsta includes it as a $100/month add-on; Cloudways includes it free) or via a drop-in plugin (Redis Object Cache, W3 Total Cache). WP Engine uses proprietary server-level caching instead of Redis.


LiteSpeed Cache - Best free option (on LiteSpeed servers)

LiteSpeed Cache is the most capable free caching plugin available, with one significant caveat: its best features only work on LiteSpeed web servers.

Why the server matters:

On a LiteSpeed server, the plugin communicates directly with the server's built-in cache module. The server handles caching at the connection level, before PHP even loads. This achieves TTFB under 15ms for cached pages - faster than what any PHP-based caching plugin can achieve.

On an Nginx or Apache server, LiteSpeed Cache falls back to standard PHP-based caching. It still works, but you lose the server-level speed advantage.

What LiteSpeed Cache includes (free):

  • Full-page caching with tag-based cache invalidation
  • Object caching (Redis/Memcached integration)
  • CSS/JS minification and combination
  • Image optimisation with WebP conversion (via the QUIC.cloud service)
  • Critical CSS generation
  • Lazy loading for images and iframes
  • Database optimisation (remove expired transients, clean post revisions)
  • WooCommerce-specific exclusions and ESI (Edge Side Includes) for cart widget

Performance data:

On LiteSpeed server (Cloudways with LiteSpeed, Hetzner with OpenLiteSpeed):

  • TTFB (cache hit): 8-18ms
  • Lighthouse Performance: 95-99
  • Core Web Vitals: Pass on most clean installs

On Nginx server:

  • TTFB (cache hit): 25-45ms
  • Lighthouse Performance: 88-94

Drawbacks:

The settings panel has more options than any other caching plugin. It is organised logically but requires time to understand. Misconfiguring CSS optimisation is the most common issue - combined CSS files that include page-specific styles can cause visual bugs on pages where those styles should not load.

QUIC.cloud credits (for image optimisation and critical CSS) are limited on the free plan. For sites with thousands of images, you will exhaust free credits quickly.

Best for: Sites on LiteSpeed hosting (Cloudways LiteSpeed plan, any server running OpenLiteSpeed or LiteSpeed Enterprise). The free pricing makes it the default choice for budget-conscious projects.

Pricing: Free. QUIC.cloud CDN and additional services have paid tiers.


WP Rocket - Best all-round caching plugin

WP Rocket is the most popular premium WordPress caching plugin. It works on any server, requires minimal configuration, and handles complex edge cases (WooCommerce, logged-in users, multisite) reliably.

Why agencies choose WP Rocket:

The entire plugin is designed around sensible defaults. Install it, and you immediately get working page caching, browser cache headers, GZIP compression, and basic JavaScript deferral. A non-technical client can manage it without breaking things.

This is the key difference from LiteSpeed Cache: the settings surface is smaller and harder to misconfigure. The most important options are on one screen. Advanced options are tucked away.

What WP Rocket includes:

  • Page caching with mobile-specific cache option
  • Cache preloading: WP Rocket crawls your site after cache clears to pre-warm it
  • Browser caching with correct ETags and Expires headers
  • GZIP/Brotli compression (via server configuration or plugin)
  • CSS and JS minification
  • Delay JavaScript execution: loads non-critical JS after user interaction (first scroll or click)
  • Remove unused CSS: generates per-page critical CSS and defers the rest
  • Image lazy loading
  • Database cleanup (revisions, transients, spam comments)
  • CDN integration: rewrites URLs to a CDN hostname
  • Heartbeat API control: reduces admin AJAX polling

The "Delay JavaScript" feature:

This is WP Rocket's most impactful feature for Lighthouse scores. It delays the execution of specified JavaScript files until the first user interaction. This keeps the main thread clear during initial page load, improving INP and Total Blocking Time.

The default configuration delays third-party scripts (Google Analytics, Facebook Pixel, chat widgets). This alone typically improves Lighthouse Performance by 10-20 points on pages with heavy third-party scripts.

WooCommerce integration:

WP Rocket automatically excludes WooCommerce cart and checkout pages from caching. The cart fragment AJAX request is handled correctly. Users with items in their cart see cached product pages; the cart widget updates via AJAX.

Performance data:

On Nginx (Cloudways Vultr HF):

  • TTFB (WP Rocket cache hit): 30-50ms
  • Lighthouse Performance: 91-96
  • Real-world LCP: 1.4-2.1s

Drawbacks:

Cost. €59/year for one site, €119/year for three, €299/year for unlimited. For an agency deploying on 20+ sites, the unlimited plan makes sense but the per-site price is high for small clients.

No Redis/Memcached integration (this is handled by a separate plugin or the host).

Best for: Client sites where you need reliable caching that does not require ongoing maintenance. Sites on Nginx/Apache hosting where LiteSpeed Cache cannot use server-level caching.

Pricing: €59/yr (1 site), €119/yr (3 sites), €299/yr (unlimited).


FlyingPress - Best for maximum performance

FlyingPress is the strongest challenger to WP Rocket, particularly for agencies focused on squeezing the best possible Lighthouse scores. Its CSS optimisation is more aggressive and more accurate than WP Rocket's.

What makes FlyingPress different:

Critical CSS generation: FlyingPress generates per-URL critical CSS - the minimum CSS required to render the above-the-fold content. The rest of the CSS is deferred and loaded after the page renders. This eliminates render-blocking CSS, one of the most common reasons for poor LCP scores.

The critical CSS implementation is more reliable than WP Rocket's. WP Rocket generates critical CSS per-page-type (front page, single post, archive). FlyingPress generates it per-URL, which is more accurate but slower to generate for large sites.

JavaScript delay: FlyingPress delays non-critical JS by default with an exclusion list for scripts that must load immediately. The interface for managing this exclusion list is clearer than WP Rocket's.

Database management: Automatic cleanup of post revisions (configurable limit), expired transients, and orphaned postmeta. Scheduled to run weekly.

Performance data:

On Nginx (Cloudways Vultr HF):

  • TTFB (FlyingPress cache hit): 28-45ms
  • Lighthouse Performance: 93-99
  • Real-world LCP: 1.2-1.8s

FlyingPress consistently scores 3-7 points higher than WP Rocket on Lighthouse in head-to-head tests on the same server. The difference is primarily from the more aggressive critical CSS implementation.

Drawbacks:

Fewer integrations than WP Rocket. WP Rocket has documented integrations with dozens of themes and plugins; FlyingPress is newer and some edge cases require manual configuration.

Smaller community means fewer tutorials and support resources when you encounter a problem.

Best for: Performance-focused builds where Lighthouse scores matter (Core Web Vitals pass, client-facing performance reports). Agency builds where you control the entire stack.

Pricing: €70/yr (1 site), €200/yr (unlimited).


W3 Total Cache - Best free option on Nginx/Apache

If you need a free caching plugin on Nginx or Apache hosting, W3 Total Cache is the most configurable option. It integrates with every object caching backend (Redis, Memcached, APC), supports CDN URL rewriting, and has a minification pipeline.

The trade-off is complexity. W3 Total Cache has dozens of configuration options and a history of performance inconsistencies between versions. It requires more setup time than any other plugin here.

When to use it: Sites on shared hosting where you cannot use LiteSpeed Cache and cannot justify the cost of WP Rocket or FlyingPress.

Pricing: Free. Premium add-ons available.


The configuration that actually works

Regardless of which plugin you choose, these settings improve performance on most WordPress sites:

Cache preloading: After any cache purge (new post, plugin update), trigger a crawl of your sitemap to pre-warm the cache. Cold cache means the first visitor after a purge gets an uncached response. On WP Rocket this is enabled by default. On LiteSpeed Cache, enable sitemap-based crawler.

Correct browser cache TTL: Set long TTLs (1 year) for versioned static files (CSS, JS with cache-busting filenames) and shorter TTLs (24-48 hours) for unversioned files. Many plugins set the same TTL for everything.

Separate mobile cache: Mobile and desktop can serve different content (conditional menus, different image sizes). Enable the separate mobile cache option if your theme behaves differently on mobile.

Avoid minifying admin pages: CSS/JS minification on the WordPress admin can break editors, page builders, and plugin interfaces. All caching plugins should exclude admin pages by default, but verify this is configured correctly.

Database cleanup schedule: Set up weekly automatic cleanup of post revisions (keep last 5), expired transients, and spam comments. On a 3-year-old site with daily posts, this can reduce the database size by 40-60%.


My recommendation by scenario

On LiteSpeed hosting: LiteSpeed Cache, no question. The free server-level caching outperforms every paid alternative on Nginx.

On Nginx/Apache, client-managed site: WP Rocket. The sensible defaults mean a client cannot easily misconfigure it. Worth the cost.

On Nginx/Apache, agency-managed site focused on performance: FlyingPress. The per-URL critical CSS and aggressive JS delay deliver better Lighthouse scores for sites you actively maintain.

Budget build on Nginx/Apache: W3 Total Cache with Redis object caching. Free, powerful, but requires 2-3 hours of initial configuration to get right.


Common caching misconfigurations and how to fix them

Most caching problems are caused by misconfiguration, not the plugin itself. These are the issues that appear most frequently on agency client sites.

Problem: CSS or JS is broken after enabling minification

Cause: The minifier combines files in the wrong order, or a script relies on a global variable defined in another file that is now loaded later.

Fix: Disable CSS/JS combination (keep minification but load separate files). If that does not fix it, disable JS minification entirely and re-enable one script group at a time to identify the offending script.

In WP Rocket: Settings > File Optimization > uncheck "Combine JavaScript files". In LiteSpeed Cache: Page Optimization > JS Settings > uncheck "JS Combine".

Problem: Logged-in users see cached content from other users

Cause: The caching plugin is set to cache pages for all users including logged-in users, and user-specific content (cart totals, user names, personalized widgets) is getting cached and served to the wrong person.

Fix: Configure the plugin to not cache for logged-in users, or configure a separate cache for logged-in users that is user-specific. In WP Rocket: Advanced Rules > Never Cache Cookies - add wordpress_logged_in_* pattern. In LiteSpeed Cache: enable "Cache Logged-in Users" only if you understand the implications and have a CDN handling the user-specific segment.

Problem: Cache is not being cleared when content updates

Cause: The plugin's cache purging rules are not configured to clear cache when the relevant content type changes. Common with custom post types.

Fix: Add the cache purge rule for your custom post type. In WP Rocket: Smart Cache Preloading handles this for standard post types. For custom post types, add them in the Cache tab. In LiteSpeed Cache: Settings > Purge > Custom Post Types - enable purge for your post type.

Problem: Mobile users get the desktop cached page

Cause: The "separate mobile cache" option is not enabled, and your theme serves different HTML to mobile users (different menu, hidden elements, different image sizes). The desktop cache serves to mobile users.

Fix: Enable separate mobile cache. In WP Rocket: Basic tab > Mobile Cache > "Enable caching for mobile devices in a separate file". Note: this only helps if your theme uses responsive design with server-side mobile detection. If you use CSS media queries for responsive layout (which is standard), you do not need separate mobile cache.

Problem: WooCommerce cart shows wrong item count for cached users

Cause: The cart fragment AJAX call is disabled or broken. Full-page caching serves the correct page, but the cart widget shows the state from when the page was cached.

Fix: Verify wc-cart-fragments.min.js is not being delayed, deferred, or blocked by your caching plugin. In WP Rocket: Advanced tab > Delay JavaScript Execution > Excluded JavaScript - add wc-cart-fragments. This script must load immediately on every page.


Measuring the actual impact of your caching configuration

Installing a caching plugin and assuming it is working correctly is a mistake. Verify the configuration is actually delivering the expected performance improvement.

Check for a cache HIT header:

Open Chrome DevTools > Network tab. Load your homepage. Click the first HTML document in the waterfall. Look in the Response Headers for caching evidence:

  • WP Rocket: X-WP-CF-Super-Cache: 1 or X-Cache: HIT
  • LiteSpeed Cache: X-LiteSpeed-Cache: hit
  • Varnish (Cloudways): X-Cache: HIT
  • Cloudflare: CF-Cache-Status: HIT

If you see MISS or BYPASS, the cache is not serving this page. Investigate why (logged-in user? excluded URL? cache not warm yet?).

Compare TTFB before and after:

Use Chrome DevTools > Network tab > Timing to check TTFB. A properly cached page should show TTFB under 50ms. Uncached pages show 150-500ms depending on the host.

Run the check in an Incognito window (to avoid browser cache) and while not logged into WordPress.

Check Lighthouse before and after:

Run PageSpeed Insights on a key page before configuring caching, then after each configuration step. Track which settings produce the biggest Lighthouse improvements.

Typically: page caching produces the largest TTFB improvement. Delayed JavaScript produces the largest TBT improvement. CSS optimisation and critical CSS produce the largest LCP improvement.


Caching on multisite WordPress networks

WordPress Multisite requires special caching configuration. Some plugins handle multisite well; others do not.

LiteSpeed Cache: Full multisite support. Each subsite gets its own cache partition. Cache purging on one subsite does not affect other subsites. Recommended for multisite.

WP Rocket: Multisite compatible but with limitations. Network-wide settings apply to all sites; per-site override is not supported in the free version. The $299/yr unlimited plan includes multisite.

W3 Total Cache: Multisite support is present but the configuration complexity increases significantly. Each subsite shares the same cache configuration unless you implement custom mu-plugin overrides.

General multisite caching rules:

  • User roles and capabilities can differ between subsites. If you use role-based cache exclusions, verify each subsite's rules independently.
  • Shared CDN configuration is usually fine. All subsites can share one CDN pull zone.
  • Subdomain multisite vs subdirectory multisite have different caching implications for SSL and cookie scope.

Object caching vs full-page caching: understanding the difference

Agencies and developers often conflate object caching and full-page caching. They are separate systems solving different problems.

Full-page caching stores the entire HTML response. It eliminates PHP execution and database queries for cached pages. Impact: dramatic TTFB improvement for the requests it covers (logged-out visitors on non-excluded pages).

Object caching (Redis, Memcached) stores the results of expensive operations in memory for reuse. Without it, every WordPress database query runs a SQL statement. With it, frequently-used data (options, post metadata, term relationships) is returned from memory in microseconds.

The key insight: object caching helps uncached requests. Full-page caching eliminates most requests entirely. They complement each other:

  1. Full-page cache serves 80-90% of traffic (logged-out visitors, warm cache)
  2. Object cache speeds up the remaining 10-20% (WooCommerce checkout, logged-in users, cache misses)

On a WooCommerce store with Redis object caching enabled, checkout page TTFB typically drops by 30-60% compared to the same server without Redis. This improvement is invisible in Lighthouse (which tests public pages) but directly affects paying customers.

Install Redis object caching on any site with logged-in users, WooCommerce, or membership functionality. The Redis Object Cache plugin by Till Krüss is the standard implementation for sites not on managed hosts that include Redis.


Frequently Asked Questions

What is the best WordPress caching plugin in 2026?
LiteSpeed Cache is the best free option if your server runs LiteSpeed or OpenLiteSpeed. WP Rocket is the best premium option for any server. FlyingPress is a strong alternative for agencies managing multiple sites.
Is LiteSpeed Cache better than WP Rocket?
LiteSpeed Cache is faster than WP Rocket when running on a LiteSpeed server because it uses server-level caching. On Nginx or Apache, WP Rocket outperforms LiteSpeed Cache.
Is WP Rocket worth it in 2026?
Yes, for most WordPress sites on shared or managed hosting. WP Rocket handles cache preloading, critical CSS, and lazy loading without requiring server access. The single site licence starts at €59/year.
What is the best free WordPress caching plugin?
LiteSpeed Cache is the best free caching plugin in 2026. It is actively maintained, has full-page caching, image optimization, and a CDN integration — all free.
Does caching work with WooCommerce?
Yes, but requires configuration. Cart, checkout, and account pages must be excluded from caching. LiteSpeed Cache and WP Rocket both handle WooCommerce cache exclusions automatically.

Was this article helpful?