From Slow to Slower: WordPress Backend Bloat Is Getting Worse

Created on: | Last updated on:

A data-backed deep dive into how plugins like WooCommerce load hundreds of unnecessary files and what it means for performance, sustainability, and WordPress’s future.

When it comes to optimizing WordPress performance, all eyes are on the front end. Page builders talk endlessly about "clean HTML," asset minification, or lazy-loading images to improve Lighthouse scores. However, there's one area that's almost completely overlooked—despite its significant impact: backend bloat.

Behind every slow WordPress site is a web of autoloaded plugin files, unnecessary classes, and functions that run even when they’re not needed. WooCommerce is one of the most powerful and widely used plugins in the WordPress ecosystem—but it's also one of the most bloated. Over the years, it has quietly grown into a backend heavyweight, affecting Time to First Byte (TTFB) even on pages that don’t touch e-commerce functionality at all.

In this post, I’ll walk you through a series of real-world measurements comparing WooCommerce versions from 5.6.2 to 10.1.2—both in empty test installs and on a real e-commerce site. The results demonstrate the significant amount of unnecessary overhead introduced in newer versions and its direct impact on backend speed, memory usage, and cold start performance.

My Journey into the World of Bloated Plugins

This all started when I took over maintenance and admin work on a busy WooCommerce-based e-shop for a long-term client. The site was far from minimal—it ran over 90 active plugins, WooCommerce with multiple plugins for shipping, membership, subscription, and a busy blog with ads, premium access...

At first, I reached for what most developers do: a plugin that promised plugin optimization. I tried one called “Plugin Optimiser.” It worked to some extent, but it was too rigid and lacked the level of control I needed. So I forked it. And then eventually, I rewrote it entirely—what began as a hack turned into a full-featured tool I now maintain: Advanced Plugin Filter.

With it, I built over 60 filters for that single site—each one tuned to load only the necessary plugins depending on the request type: front-end, admin, AJAX, REST API, Cron jobs, and more. It was the only way to keep the experience usable without removing core features the business relied on.

The results were immediate.

AJAX calls that used to feel stuck now respond in milliseconds. Admin pages, especially those related to WooCommerce orders, became actually pleasant to use. We shaved entire seconds off the TTFB just by cutting out the dead weight. According to today’s stats, the average TTFB on a product page is 660ms when full page cache is not used and running on one of the fastest CPUs money can buy today.

Of course, it’s not a silver bullet.

Some plugins don’t play well when you try to disable them in certain branches—routing breaks, actions are skipped, or hooks don’t fire. And it does add complexity: every plugin you introduce has to be tested across contexts. But the trade-off is worth it when you're trying to run a high-functioning e-commerce site on WordPress at scale.

What WordPress really needs is a cultural shift: where back-end performance is treated with the same seriousness as front-end, with arrival of the Oxygen builder. Just like you wouldn’t load 1.5MB of unused CSS, plugin code that’s never used in a given request should not be loaded at all.

Methodology: How I Measured Backend Bloat

To measure how WooCommerce’s backend footprint has grown over time, I designed two test scenarios: one controlled and minimal, the other based on a real-world WooCommerce store. Both were run locally on Windows for consistent environment control.

Test Scenarios:

1. Clean WordPress Install – Minimal Load

This scenario isolates WooCommerce to reveal its standalone impact.

  • WordPress Version: 6.8.2 (latest)
  • Active Plugin: Only WooCommerce
  • Theme: Intentionally blank (no page content)
  • Purpose: Measure baseline TTFB, file count, and OPcache memory usage with zero plugin or theme interference.

2. Real-World Store Clone

This scenario replicates a real e-commerce site with all the usual complexity.

  • Source: Copy of an actual WooCommerce store running locally
  • Theme: Astra theme + child custom-built theme
  • Plugins: 60+ active plugins, including WooCommerce add-ons
  • Advanced Plugins Filter: Disabled – no conditional loading
  • Purpose: Measure real-world overhead, including complex product rendering, plugin load, memory pressure, and TTFB.

A Note on "TTFB"

While TTFB (Time To First Byte) is a widely used term, what I measured technically isn’t the traditional TTFB reported by browser dev tools or external monitors.

Instead, I measured the time between when WP_START_TIMESTAMP is defined in WordPress Core and when the PHP shutdown function is triggered — just after the main thread finishes executing.

This means my values exclude:

  • Web server overhead (e.g. Nginx or Apache response delay)
  • SSL negotiation or TLS handshake
  • Firewall, proxy, or CDN delays
  • Network latency or ISP routing time

I chose this approach intentionally. It isolates the part of the request lifecycle that WordPress plugins and themes can actually influence — making it a more accurate reflection of backend bloat, rather than external delivery issues.

That said, for the sake of readability, I still refer to it as TTFB throughout this post. Just know that this is a focused, internal measurement — not the browser-visible TTFB from tools like Lighthouse or WebPageTest.

Where & What Was Measured

Each scenario focused on specific backend points to maintain comparability:

1. Minimal Install

Tested Page: /wp-admin/tools.php (standard admin Tools screen)

Why? It's a neutral backend screen where WooCommerce doesn’t need to do anything—but still loads.

2. Real Store

Tested Page: A product page with multiple variations and bundles.

Why? Real-world frontend scenario with the full stack running.

Metrics Captured

For each scenario and WooCommerce version, I captured:

  1. Number of PHP files loaded
  2. OPcache memory used after plugin load
  3. TTFB (Time To First Byte) using PHP script

Cold vs Warm Run

Each request was measured under two conditions:

Cold Run:

  • The PHP process was restarted to flush OPcache.
  • Simulates first load after a OPcache TTL has timed out.
  • Captures full load + compile time.

Warm Run:

  • The same request was repeated immediately after a cold load.
  • OPcache has been made.
  • Captures typical user experience during normal use.

It’s important to understand that OPcache has a time-to-live (TTL). In real-world scenarios, especially on sites that don’t receive constant traffic or run on shared hosting, there’s a high chance that OPcache won’t always be ready. When that happens, PHP has to reload all the files, parse them, compile them, and repopulate the OPcache before it can run the code.

I know this firsthand because I’ve measured real-world e-shops. Even on high-performance dedicated servers running low load, if the OPcache isn’t ready, you’ll see a +5 second spike in TTFB. On shared or less performant hosting, that possibility is even higher. That’s why we have to consider cold runs as a realistic scenario—because it does happen in the wild.

Measurements – Scenario 1: Minimal WooCommerce Install

To understand WooCommerce’s true backend footprint, I first measured it in total isolation.

This scenario used the cleanest setup possible: a fresh WordPress install on Windows, with only one plugin activated — WooCommerce — and an intentionally blank theme. No caching layers, no object cache, no CDN. Just WordPress, WooCommerce, and a stopwatch script.

The tested page was /wp-admin/tools.php — a backend admin screen where WooCommerce has no visible presence or functionality. In theory, this page shouldn’t require WooCommerce at all. And yet, as you’ll see, WooCommerce still autoloads hundreds of files and introduces measurable delay.

To make the difference clear, I also measured the same page with no plugins at all, using WordPress core only.

VersionFiles LoadedOPcache MemoryCold TTFBWarm TTFB
WordPress Core Only-–580 ms30 ms
WooCommerce 5.6.249310 MB1.1 s130 ms
WooCommerce 7.5.174613 MB1.2 s130 ms
WooCommerce 10.1.289319 MB1.4 s140 ms

Observations

  • WordPress Core Only was very fast: just 30 ms warm TTFB
  • WooCommerce 5.6.2 more than doubled cold TTFB (+520 ms) and pushed warm TTFB up to 130 ms.
  • Later versions of WooCommerce added even more files and memory overhead — reaching 893 files and 19 MB memory in version 10.1.2.
  • Despite not being used at all on the /tools.php page, WooCommerce loads its full stack — including shipping logic, analytics classes, and Gutenberg support.

In short: WooCommerce does not respect context. Even on a backend page it has no reason to touch, it autoloads everything — costing hundreds of milliseconds and consuming server memory.

Next, let’s see how this changes when we measure WooCommerce in a real-world environment, with dozens of active plugins, a custom theme, and live product pages. Note, I couldn't downgrade to 5.6.2, so measurements are missing.

Measurements – Scenario 2: Real-World WooCommerce Site

 

VersionFiles LoadedOPcache MemoryCold TTFBWarm TTFB
WooCommerce 7.5.174613 MB3.7 s1.0 s
WooCommerce 10.1.284420 MB4.6 s1.1 s

 

Observations

  • old TTFB is way too slow — with version 10.1.2 taking 4.6 seconds to generate the product page on first load.
  • Warm TTFB is also slow — even after OPcache kicks in, the response time still hovers around 1 second. That’s significantly higher than acceptable for any modern frontend interaction. And it's important to understand that many other plugins contributed to this value, not only WooCommerce

Next, let’s break down what exactly is consuming this time — which functions and files are responsible for the slowdown, and whether they’re actually needed.

What’s Causing the Slowdown?

To understand where WooCommerce was spending time on the product page, I profiled the real-world with version 10.1.2 using plugin Code Profiler Pro. The results were clear: the bloat isn’t just about file count or memory — it’s what those files do at runtime.

From the profiler output:

  • 12 out of the top 20 slowest functions or methods came directly from WooCommerce.
  • A significant amount of time was spent inside the WooCommerce autoloader, just pulling in classes.
  • Multiple slow methods were related to Gutenberg blocks, despite the site not using Gutenberg at all.
  • Large objects added into $_GLOBALS
  • Even without any block editor in use, WooCommerce loads all its block-related logic, including block registration and associated analytics or admin code.

These aren’t just theoretical inefficiencies. They show up in TTFB and compound with every plugin and feature WooCommerce insists on loading globally, regardless of context.

Conclusion – This Isn’t Just a WooCommerce Problem

WooCommerce is the case study here — but it’s just the tip of the iceberg. I used it because it makes it easier to demonstrate the point because of its size. But make no mistake — 99% of plugins contribute to this problem in some form. And yes—even those that claim to be performant, lightweight, optimized, and built by long-term community members and developers. The hype is real. But don’t just take my word for it—see for yourself how many files it required to load on a neutral page. I’ve yet to see a plugin truly developed to be lean and frugal in what PHP files it loads.

This is already doing damage.

The narrative that “WordPress is slow” isn’t just perception — it’s becoming reality. And not because of WordPress Core, but because of how the ecosystem evolved without any backend loading discipline. The platform’s reputation suffers. And with AI and vibe coding, the worst is yet to come.

If this doesn’t change, WordPress risks going the way of Kodak, BlackBerry, Nokia, and others—once dominant, but ultimately unable to evolve within the very environment they helped define.

And yes, speaking of environment — there’s a real cost to this inefficiency. WordPress powers over 40% of the internet. The amount of electricity wasted on parsing, compiling, and executing unused PHP code on millions of requests per second word-wide is difficult to calculate — but undeniably massive. Optimising backend loading behaviour at scale wouldn’t just improve performance — it would have a measurable impact on the web’s carbon footprint.

This is about more than shaving off milliseconds. It’s about acknowledging that we’ve been ignoring the backend for too long, and it’s starting to catch up with us.

I originally used Plugin Optimizer to try to mitigate this — and eventually rewrote it into my own tool, Advanced Plugin Filter, because there was no way to control what didn’t need to load. As already mentioned, plugins filtering has its trade-offs not many users want to deal with. This mindset should be built into plugin development from the start.

If we want WordPress to survive and thrive in the years ahead, we need to get serious about backend performance—not only for speed, but also for sustainability, credibility, and the long-term health of the WordPress ecosystem.

Let's start the discussion! Let me know what you think in the comments section or through the contact form.

Leave a Reply

Your email address will not be published. Required fields are marked *

WP Speed Doctor Copyright © 2026
The WordPress® trademark is the intellectual property of the WordPress Foundation, and the Woo® and WooCommerce® trademarks are the intellectual property of WooCommerce, Inc. Uses of the WordPress®, Woo®, and WooCommerce® names in this website are for identification purposes only and do not imply an endorsement by WordPress Foundation or WooCommerce, Inc. wpspeeddoctor.com is not endorsed or owned by, or affiliated with, the WordPress Foundation or WooCommerce, Inc.
Top