WooCommerce High-Load Optimization
WooCommerce optimization for large catalogues
WooCommerce is perfectly happy with a few hundred products and starts choking on tens of thousands. The symptoms are recognisable: the admin takes half a minute to open, order search locks up the site, a price import brings the server down, and every new plugin makes it worse.
Why this happens
The cause is architectural: WordPress stores products as posts and all their properties — prices, stock, attributes — in a separate metadata table. A query for "in-stock products under 500" turns into several joins across a table with millions of rows. On a small catalogue that goes unnoticed; on a large one it is fatal.
What delivers the biggest effect
- moving to dedicated order storage — on large volumes the difference is severalfold;
- indexes matched to your store's actual queries rather than a "standard set";
- cleaning the metadata table: in stores with years of history, half of it is debris from deleted plugins;
- an object cache, so queries stop repeating on every page load;
- a plugin review: usually two or three of them account for most of the slowdown;
- moving heavy operations into background jobs, so imports do not block the site.
Order of work
Measurement first — which queries are slow and how many run per page. Then fixes from biggest effect to smallest, with a control measurement after each step. Everything on a copy; the move to production comes after verification.
An honest word on the limits
If the store sits on hosting limited to a couple of cores and a gigabyte of memory, code optimization will give a noticeable but finite result. Beyond a certain scale you need a server built for the load, and it is better to know that in advance.
Tags: wordpress, woocommerce, optimization, high-load, redis