Most "how to speed up WordPress" articles you'll find were written for a different web. They tell you to install a cache plugin, optimise your images, pick a faster host, and call it a day. That advice was right in 2018 when most WordPress sites were blogs with five plugins and a stock theme. In 2026 it's missing the half of the answer that matters most on real sites.
The half that's missing: a real WordPress install in 2026 has 25–45 plugins active, runs a page builder or block theme, sells subscriptions through WooCommerce or memberships, and has 30–60% of its traffic logged-in (which means page caching does nothing for it). The "install WP Rocket, you're done" advice doesn't apply to those sites — not because it's wrong, but because it solves the easy 50% and leaves the hard 50% in place.
This guide is the version I wish someone had written when I was first optimising real client WordPress sites. Ten methods, ranked by impact on a typical plugin-heavy site, with the diagnostic to figure out which method matters for your specific bottleneck. Honest disclosure I always include up front: I make AcceleratorWP, a structural performance plugin. It's mentioned throughout this post because structural optimisation is one of the ten methods and it's what I work on every day. The rest of the guide stands alone — every method below works regardless of which specific tools you choose to implement it.
Why WordPress is slow: the four layers
Before any method, the diagnostic. WordPress slowness lives in one of four layers, and the right fix depends on which layer you're in:
Layer 1 — Network. DNS lookup, TCP handshake, TLS negotiation, the time bytes take to travel from your origin to the visitor. Caused by slow hosting, distance from POP, missing CDN. Felt as: slow even on cached pages, slow in some regions but not others.
Layer 2 — Cache miss. WordPress booted, generated the page, didn't have a cache to serve from. Caused by uncacheable URLs (checkout, logged-in dashboard, REST API, admin-ajax), aggressive cache exclusions, or no page cache configured. Felt as: random pages slow while others are fast.
Layer 3 — WordPress boot cost. Every active plugin's main file loaded on every uncached request, regardless of whether it does anything on that URL. Felt as: slow on every uncached page consistently, slow on logged-in pages, slow on REST endpoints.
Layer 4 — Asset weight. Browser downloading and parsing CSS/JS/images. Caused by plugin bloat, unoptimised images, page builder frameworks loading globally. Felt as: slow LCP, high Speed Index, low Lighthouse mobile score.
Most operators have problems in 2–3 layers simultaneously and fix only one. The methods below address all four, in roughly the order of leverage on a typical site.
Method 1: Pick the right hosting (the foundation)
WordPress can't be faster than the hosting it runs on. A managed WP host with NGINX, PHP 8.2, MySQL 8, and Redis available is the foundation everything else builds on. Cheap shared hosting throttles CPU during traffic spikes, caps memory at 128 MB, and runs PHP 7.4 from 2019.
The realistic options in 2026:
- Premium managed: WP Engine, Kinsta, Pressable. $25–$60/month for one site, scales painfully. Best support, best edge networks.
- Cloud-managed: Cloudways, RunCloud + DigitalOcean / Vultr. $11–$30/month, more flexibility, more responsibility.
- LiteSpeed-based: SiteGround, NameHero, Hostinger. Often $4–$25/month, gets you LiteSpeed Cache for free (which is the best free speed plugin if your host runs LiteSpeed Web Server).
- Premium specialty: Rocket.net. Cloudflare Enterprise built-in, per-site pricing climbs fast.
The Rocket.net alternatives post covers the managed hosting landscape in depth, including the honest diagnostic for whether you actually need to switch hosts or whether your problem lives further up the stack.
Where AcceleratorWP fits in this method: Even the fastest host runs WordPress, and WordPress's plugin loader doesn't change based on hosting tier — every active plugin's main file loads on every uncached request, regardless of whether you're paying $5/month or $500/month. Hosting is the foundation; structural plugin loading (the layer AcceleratorWP operates on) sits on top of any hosting tier. Don't skip the hosting upgrade if you're on bad infrastructure, but don't expect a better host alone to fix plugin-bloat slowness either.
Method 2: Page caching (the cheapest big win)
Page caching generates a static HTML copy of each cacheable page and serves subsequent visitors that copy without WordPress booting. TTFB drops from 1,200–1,800 ms to 50–100 ms on cached pages. It's the single highest-leverage technique available, costs nothing to maintain once configured, and works for visitor pages that don't require live data.
The realistic choices:
- WP Rocket ($59/year) — the boring default that just works on most sites
- LiteSpeed Cache (free, if your host supports it) — best free option on LiteSpeed hosts
- WP Super Cache (free, Automattic) — minimal feature set, still solid
- NitroPack (paid, per-pageview) — SaaS proxy, automated, watch the pricing
- FlyingPress ($60/year) — newer alternative with better page-builder defaults
The main WordPress speed plugin ranking covers eight of these in detail. The WP Rocket alternatives post covers the alternatives if WP Rocket doesn't fit your stack, the NitroPack vs WP Rocket comparison handles the SaaS-vs-plugin trade-off honestly, and the Perfmatters vs WP Rocket comparison clarifies that those two aren't even in the same product category despite the "vs" framing.
Where AcceleratorWP fits in this method: Page caching addresses the cacheable side of your traffic. On a blog or marketing site, that's 90–98% of requests, and page caching alone is the answer. On a WooCommerce store, a membership site, or anywhere with significant logged-in traffic, the cacheable side is only 40–70% — the rest (checkout, account, REST, admin-ajax) bypasses every page cache on the market. The edge caching post covers this gap in detail. AcceleratorWP's structural plugin loading is what handles the uncacheable half; page caching and AcceleratorWP compose, they don't compete.
Method 3: Asset optimisation (CSS, JS, fonts)
Asset optimisation reduces the bytes shipped to the visitor's browser. Three sub-categories that compose differently:
Minification and compression: Strip whitespace, remove comments, gzip/Brotli compress. Built into most cache plugins (WP Rocket, LiteSpeed, FlyingPress). Negligible setup cost, ~10–20% asset weight reduction.
Deferral and asynchronous loading: Tell the browser to download JS without blocking render. Available in WP Rocket and Autoptimize. Defer most JS, keep critical inline. Trade-off: aggressive deferral occasionally breaks interactive widgets, test before shipping.
Per-page asset management (the highest-leverage of the three): Disable specific CSS/JS files on URLs where they aren't used. Contact Form 7 stylesheet loading on every page when you only have one contact form. Elementor's framework loading on Gutenberg-built pages. WooCommerce's cart-fragments script firing on your blog posts. The right tool here is Perfmatters ($25/year) or Asset CleanUp Pro.
The page builder performance plugin ranking covers asset optimisation specifically for Elementor/Divi/Bricks sites where this layer matters most.
Where AcceleratorWP fits in this method: Asset optimisation operates on what gets enqueued. AcceleratorWP operates on what gets loaded into WordPress in the first place. A plugin that's skipped at the mu-plugin layer doesn't enqueue any assets, register any hooks, or run any code on that request. The two compose: trim the assets from plugins that have to stay loaded, and skip the plugins entirely that don't belong on a given request.
Method 4: Image optimisation
Images are usually the heaviest single asset class on a WordPress page, and the easiest to fix structurally. Three steps:
- Convert to WebP or AVIF. Both formats produce smaller files than JPEG/PNG at equivalent quality. Native browser support is universal in 2026.
- Lazy load images below the fold. They only download when the visitor scrolls toward them.
- Serve the right size for the device. A 4000px wide image on a phone is wasteful.
The realistic tools: ShortPixel, Imagify (by the WP Rocket team), Smush, Optimole, EWWW Image Optimizer. All compose with whatever page cache you've installed.
If your designer already exports images at correct dimensions in modern formats, the plugin's compression step is redundant — audit what's being loaded before installing.
Where AcceleratorWP fits in this method: Image optimisation is one of the few methods that AcceleratorWP doesn't interact with. We don't compress images; image plugins do that. Mention this honestly because the picture is incomplete without it: a structural fix for plugin bloat is necessary on most plugin-heavy sites but isn't sufficient — you still need to do the image work separately. Both happen.
Method 5: Object cache (Redis or Memcached)
Page caching helps visitor requests that hit the cache. Object caching helps every request that boots WordPress — by serving repeated database queries from memory instead of MySQL. On a WooCommerce request, wp_options is queried 50–150 times; with object cache, the second query onward is a microsecond RAM lookup instead of a network-and-disk round-trip to the database.
The realistic tools: Object Cache Pro ($95/year, materially better hit ratios on busy sites) or Redis Object Cache (free, basic but works). Both require Redis or Memcached running on your server. Most managed WP hosts include it; on a VPS you'll need to install it yourself.
The WordPress LMS and membership performance plugin post covers object cache in detail for the use cases where it matters most (logged-in heavy sites where page caching doesn't help).
Where AcceleratorWP fits in this method: Object cache speeds up the queries that run. AcceleratorWP reduces which queries run, by skipping irrelevant plugins entirely on a given request. They're orthogonal wins: a logged-in dashboard with 28 of 40 plugins skipped (AcceleratorWP) and the remaining queries served from Redis (object cache) is the architecture that gets sub-500 ms TTFB on member sites that were sitting at 1,800 ms before.
Method 6: Structural plugin loading — the layer most guides skip
This is the method that doesn't appear in any other "how to speed up WordPress" guide, and the one that does the most work on the kind of WordPress site that exists in 2026. Stay with me on the mechanics because the explanation isn't complicated, just unfamiliar.
WordPress's plugin loader works like this: on every request, wp-settings.php reads the active_plugins option from the database, then includes each active plugin's main file via PHP's require_once. Every plugin's __construct() runs, every plugin's hooks register, every plugin's classes load into memory. This happens on every uncached page load. It happens on the homepage. It happens on the checkout. It happens on /wp-cron.php. It happens on /wp-json/wc/v3/orders. It happens on admin-ajax.php?action=heartbeat.
The cost of this isn't theoretical. On a 35-plugin WooCommerce site, the cumulative boot cost is 600–900 ms before any actual request processing begins. On the requests that bypass page caching — checkout, dashboard, REST API, admin-ajax — that boot cost is paid in full on every single request, on top of whatever the request actually does. The slow checkout that everyone blames on WooCommerce is usually 30–40% WooCommerce and 60–70% "every other plugin booting that has nothing to do with checkout."
The structural fix is to skip plugins that don't belong on a given request, before WordPress reads active_plugins. The only intervention point that runs that early is the mu-plugin layer — must-use plugins, loaded by WordPress before any regular plugin is touched. An mu-plugin can attach a filter to option_active_plugins that intercepts the active plugin list and returns a reduced subset for the current request, based on URL pattern, request class, or both.
The result: your SEO plugin doesn't load on a REST API call. Your slider plugin doesn't load on /wp-cron.php. Your booking calendar doesn't load on the About page that has no booking widget. The plugins that need to run on a given request still run. The ones that don't are entirely absent — they don't enqueue assets, don't register hooks, don't instantiate classes, don't appear in the request at all.
I make AcceleratorWP because writing this fix by hand for every WordPress site I optimised was eating my time. The product packages the mu-plugin intervention, the URL-pattern matching, the dependency safety checks (a plugin that's required by another plugin can't be skipped without breaking the dependent), and the shadow soak verification window that runs new skip rules against real traffic for 24 hours before activating. The two main modules are Plugin Skipper (skip irrelevant plugins on a per-request basis) and Hook Pruner (for plugins that have to load but whose hooks for irrelevant features should be removed). The longer technical breakdown is in the survey of cache-free WordPress performance methods and the per-page plugin loading post.
Real numbers from a beta-tester WooCommerce site (43 plugins, Cloudflare in front with 94% cache hit ratio, Object Cache Pro installed):
- Checkout page TTFB before structural fix: 1,920 ms
- Checkout page TTFB after: 490 ms
wp-json/wc/v3/orders(subscription poll): 1,420 ms → 410 ms- Customer dashboard: 1,640 ms → 510 ms
- Cloudflare hit ratio: unchanged (94%) — the structural fix operates on the 6% that bypassed the edge
These aren't world-record numbers. They're "the site felt slow on the pages that mattered and now it doesn't" numbers — the kind that show up in conversion rate without anyone having to instrument them. The WooCommerce slow checkout post covers this specific case in more depth, the edge caching post covers the broader pattern, and the WooCommerce non-shop pages post walks through the WooCommerce-specific gotchas.
If your site is on the brochure / blog end and most of your traffic is cacheable, the structural method is a smaller win and you can deprioritise it. If your site is WooCommerce, an LMS, a membership platform, or anything plugin-heavy with logged-in users, this is the method that moves the needle further than any other single change.
Method 7: CDN (Content Delivery Network)
A CDN caches your static assets at edge POPs close to your visitors. Images, CSS, JS files get served from the nearest data centre instead of your origin. The result is lower latency for global visitors, less load on your origin, and (for HTML caching with rules like Cloudflare's "Cache Everything") a real edge cache for your cacheable pages.
The realistic options:
- Cloudflare (free tier covers most needs, Pro $25/month adds APO)
- BunnyCDN ($1+/month, pay-as-you-go bandwidth)
- KeyCDN (same model as BunnyCDN, slightly different pricing)
- CloudFront (AWS, more setup work, integrates with the AWS stack)
Cloudflare's APO (Automatic Platform Optimization) specifically caches HTML at the edge for $5/month, which is the same conceptual win as a page cache plugin but served from Cloudflare's POPs instead of your origin. The two compose: APO at the edge, WP Rocket at the origin as a fallback.
Where AcceleratorWP fits in this method: CDN handles the network-layer optimisation. AcceleratorWP handles the request-handling optimisation. They're orthogonal and both belong in a serious stack. The edge cache catches what it can catch; the structural fix makes the rest cheap.
Method 8: WordPress core optimisations
Several WordPress core behaviours generate work that's mostly invisible until you measure it:
wp-cron. WordPress's pseudo-cron fires on uncached visitor requests. On a busy site this creates a tax of 50–150 ms per cron-checking visitor. Disable wp-cron in wp-config.php (define('DISABLE_WP_CRON', true);) and replace it with a system cron hitting wp-cron.php every 5 minutes. The post on disabling wp-cron without breaking scheduled posts covers this in detail, including the five ways the naive fix breaks scheduled work.
Heartbeat API. WordPress fires an admin-ajax request every 15 seconds in the editor (every 60 seconds in the front-end). On a busy admin this generates noticeable load. Limit it via Perfmatters or Heartbeat Control. Don't disable entirely — autosave depends on it.
REST API exposure. Unauthenticated access to /wp-json/wp/v2/users exposes usernames. Disable for non-authenticated users (Perfmatters has a toggle).
Emoji loader, oEmbed discovery, RSD link, WLW manifest. WordPress core ships with several legacy features that add bytes to every page. Disable via Perfmatters or a small mu-plugin.
Where AcceleratorWP fits in this method: Most of these core optimisations are orthogonal to structural plugin loading. The wp-cron decoupling is the exception — AcceleratorWP's Cron Decoupler module handles this with safety checks for missing system crons. Otherwise, do these via the tools above and let the structural fix handle plugin-level work.
Method 9: Database optimisation
WordPress databases accumulate cruft over time: post revisions, expired transients, spam comments, orphaned post meta from plugins you uninstalled, oversized wp_options entries with autoload = yes that load on every request. On a 3+ year old site, the database can be 800 MB to 2 GB, and routine queries get slower as the tables grow.
The realistic tools: WP-Optimize (the database cleanup half is the good part), Advanced Database Cleaner. Run quarterly as maintenance, not continuously.
The single highest-leverage database optimisation is fixing autoload bloat — wp_options entries that load on every request when they shouldn't. Run this SQL to see the offenders:
SELECT option_name, LENGTH(option_value) AS size
FROM wp_options
WHERE autoload = 'yes'
ORDER BY size DESC
LIMIT 20;Anything above 50 KB autoloaded is worth investigating — usually a deactivated plugin's settings, or a logging plugin that's storing its log in the options table.
Where AcceleratorWP fits in this method: Database work is orthogonal to plugin loading — different layer. The autoload problem in particular often originates from plugins that AcceleratorWP would skip on most request classes, so structural plugin loading reduces the impact of bad autoload behaviour even before the database cleanup runs.
Method 10: Critical CSS and font loading
The final layer is the one closest to your visitor's eyes:
Critical CSS: Inline the above-the-fold CSS in the <head> so the page renders before the full stylesheet finishes downloading. WP Rocket, FlyingPress, and LiteSpeed Cache all generate this automatically. The auto-generation is sometimes wrong on page builder sites — manually verify.
Web fonts: Self-host Google Fonts to avoid the round-trip to fonts.googleapis.com. Use font-display: swap so text renders in a fallback before the custom font downloads.
Preload hints: Use <link rel="preload"> on critical above-the-fold assets — the hero image, the main font file. Don't preload too many things; the browser deprioritises them all.
Where AcceleratorWP fits in this method: This layer is mostly browser-side rendering optimisation, orthogonal to structural plugin loading. Both happen.
The diagnostic: which method matters for your site?
Match your symptom to the method:
- TTFB above 1,200 ms on every page including cached ones: Method 1 (hosting). Fix the foundation before doing anything else.
- Homepage fast, checkout/dashboard slow: Method 6 (structural plugin loading), then Method 5 (object cache). The edge caching post walks through why.
- Lighthouse mobile score below 60: Methods 3 (assets), 4 (images), 10 (critical CSS) in that order.
- Site fast in your country, slow elsewhere: Method 7 (CDN).
- Database approaching 1 GB, admin sluggish: Method 9 (database cleanup), possibly Method 5 (object cache).
- Page builder site (Elementor, Divi) with 30+ plugins: Methods 3 (asset management via Perfmatters) + 6 (structural). The page builder performance ranking has the specific plugin stack.
- WooCommerce store with slow checkout: Method 6 (structural plugin loading), then Methods 5 + 8 (object cache + admin-ajax / cron fixes). The WooCommerce slow checkout post is the deep version.
- Membership site / LMS where logged-in is most of traffic: Method 5 (object cache) + Method 6 (structural). Page caching is a smaller win here. The LMS performance post has the stack.
Pick the methods that match your symptoms. Don't pick all ten on a site that only needs three — over-installing plugins is its own performance regression.
Stack recommendations by site type
The combinations I deploy on typical client sites:
- Brochure / marketing site (under 10 plugins): Page cache (WP Rocket or LiteSpeed) + image optimiser + CDN. Skip the rest until you grow.
- Blog / content site: Page cache + image optimiser + CDN + critical CSS. Page caching does most of the work.
- Page builder site (Elementor / Divi): Page cache + Perfmatters + image optimiser + CDN + AcceleratorWP. The asset trim and structural fix are the two big wins.
- WooCommerce store (under 25 plugins): Page cache + Object Cache Pro + Perfmatters + image optimiser + CDN + AcceleratorWP.
- WooCommerce store (25+ plugins, subscriptions, complex flows): All of the above plus database optimisation and wp-cron decoupling. AcceleratorWP's structural layer is the highest-leverage piece on this site type.
- Membership site / LMS: Object Cache Pro + Perfmatters + image optimiser + AcceleratorWP. Page cache is a smaller win because logged-in users bypass it.
- News site with comments: Same as content site plus Object Cache Pro for logged-in commenter performance.
- Headless WordPress (REST-only): Object Cache Pro + AcceleratorWP. Page cache mostly doesn't apply.
The WordPress speed optimization plugins category guide explains why each category exists and what it does — useful background if you want to understand the stack rather than just deploy it.
What to skip — and why
Common "speed up WordPress" advice that I'd skip in 2026:
- Multiple cache plugins simultaneously. WP Rocket plus WP Super Cache will fight each other. Pick one.
- Database optimisation on a fresh install. Nothing to clean up. Run it on a 3+ year old site, not a six-month-old one.
- Aggressive JS combining on modern hosts. With HTTP/2 multiplexing, combining can hurt more than it helps. Minify and defer, don't combine.
- NitroPack on a budget-sensitive growing site. The per-pageview pricing surprises operators. The NitroPack vs WP Rocket post covers the trade-off.
- Switching hosts before fixing the plugin stack. Most "I need a faster host" diagnoses are actually "I need to optimise what I have." The Rocket.net alternatives post walks through the diagnostic.
- Installing a script manager on a 6-plugin site. Perfmatters is excellent on a 30-plugin install; on a small install the ROI doesn't materialise.
Next steps
If you're reading this with a specific WordPress site in mind, the order of operations:
- Measure first. Tools like PageSpeed Insights (focus on real-device mobile), GTmetrix (good waterfall view), and Pingdom (TTFB checking from multiple regions) give you the baseline.
- Run the diagnostic above to identify which layer is slow.
- Apply the matching method or methods. Don't apply methods that don't address your bottleneck.
- Measure again. Without before/after numbers you can't know whether anything worked.
- Iterate. Performance is never one-and-done — every plugin update, theme change, and new feature is a new opportunity for regression.
If your site is on the WooCommerce, LMS, membership, or page-builder end of the spectrum — anywhere with significant plugin sprawl or logged-in traffic — Method 6 (structural plugin loading) is the one most other guides miss and the one that does the most work. Install AcceleratorWP and run the setup wizard; it'll fingerprint your site, generate skip rules from a 300-plugin rule library, and walk you through the shadow soak window before any changes go live. The free tier covers the rule library and Plugin Skipper; premium adds per-page Keep/Skip overrides, Hook Pruner, and the AJAX Action Isolator for admin-ajax requests. Pricing here.
If you've worked through this guide and have results — particularly real before/after RUM numbers from a production site — I'd genuinely like to hear about them. Send notes to my inbox. I update the guide as the WordPress performance landscape shifts.

