Speeding up your WooCommerce store is less about chasing a green PageSpeed score on the homepage and more about fixing the pages that actually take money: product, cart and checkout. A standard WordPress blog can be served as flat cached HTML, while a shop has to run live queries for stock, pricing, tax and session data on almost every request. That difference is why most generic WordPress speed advice only gets you halfway.
Below is a practical order of operations, starting with measurement, then hosting, caching, database health and the WooCommerce-specific culprits that other guides tend to skim over.
Measure the Right Pages First
Most store owners test their homepage, see a decent number, and assume the shop is fine. Run PageSpeed Insights against four URLs instead: your homepage, a category archive, your single best-selling product page, and the checkout. The gap between them is usually where the real problem hides.
Pay attention to field data (real Chrome users) over lab data, because lab tests run on a simulated device that may be nothing like your customers’ phones. Google’s Core Web Vitals thresholds are the benchmark worth targeting:
- Largest Contentful Paint (LCP): under 2.5 seconds, measured on mobile.
- Interaction to Next Paint (INP): under 200 milliseconds, which is where heavy JavaScript usually fails.
- Cumulative Layout Shift (CLS): under 0.1, often broken by unsized product images or late-loading banners.
- Time to First Byte (TTFB): aim for under 600ms; anything above 1 second on an uncached page points at hosting or database issues.
Write those four numbers down before you change anything. Without a baseline you will not know which of the fixes below actually earned its keep.
Hosting Is the Ceiling on Everything Else
You can not cache your way out of an underpowered server. Because cart and checkout requests bypass page caching by design, raw PHP and database performance sets the floor for how fast a logged-in shopper experiences your site. Cheap shared hosting that costs $4 a month typically gives you a fraction of a CPU core shared with hundreds of neighbours.
For a store doing real volume, look for PHP 8.2 or newer, object caching via Redis, NVMe storage, HTTP/2 or HTTP/3, and a server-level cache that understands WooCommerce cookies. Expect to pay $25 to $80 a month for hosting that handles a few thousand daily sessions comfortably. Managed WordPress hosts cost more but usually include the object cache and staging environment you would otherwise bolt on.
If you are still deciding on the underlying setup, our complete guide to setting up a WooCommerce store walks through the foundation choices in order.
Cache Aggressively, but Exclude the Right URLs
A page cache serves stored HTML instead of rebuilding the page, and it is still the single biggest speed win for product and category pages. The catch with WooCommerce is that three pages must never be cached: cart, checkout and my-account. Cache them and shoppers start seeing other people’s baskets.
Popular plugins like WP Rocket detect WooCommerce and set those exclusions automatically, but verify rather than assume. Sensible WP Rocket settings for a WooCommerce shop usually include:
- Page caching on, with cart, checkout and account pages excluded.
- Separate cache files for mobile if your theme serves different markup.
- Minify and combine CSS, then test the cart flow, because combining scripts is the most common source of a broken “Add to cart” button.
- Delay JavaScript execution for chat widgets, review apps and analytics tags.
- Preload the cache for your top 50 product URLs so the first visitor of the day is not the one who pays the generation cost.
If you are weighing options, our breakdown of the best WordPress caching plugins compares the free and paid contenders side by side. One rule holds regardless of plugin: never run two page cache plugins at once.
The WooCommerce-Specific Culprits Most Guides Skip
This is where stores separate from blogs, and where a lot of “I did everything and it is still slow” Reddit threads end up.
For a closer look at this topic, see our guide: How to Reduce Shopping Cart Abandonment in WooCommerce.
For a closer look at this topic, see our guide: WooCommerce vs. Shopify: Which is Best for Your Business?.
Cart fragments AJAX
WooCommerce fires an admin-ajax request called wc-ajax=get_refreshed_fragments on nearly every page load to keep the cart total in the header current. On slow hosting this single uncached request can add 300 to 800ms to every page. If your theme’s cart counter is not business critical, disable cart fragments on non-shop pages with a small snippet or a plugin built for it, then confirm the mini-cart still updates after an add-to-cart.
High-Performance Order Storage (HPOS)
WooCommerce HPOS moves orders out of the wp_posts and wp_postmeta tables into dedicated order tables. For a store with 10,000+ orders the difference in admin order searches and reporting is dramatic, often turning a 15 second query into under 2 seconds. Enable it under WooCommerce, Settings, Advanced, Features, but run compatibility mode first and check that every extension you rely on declares HPOS support.
Action Scheduler backlog
WooCommerce queues background jobs (emails, subscription renewals, sync tasks) in the Action Scheduler tables. On neglected stores these tables balloon to hundreds of thousands of rows. Check WooCommerce, Status, Scheduled Actions and clear completed and failed entries older than 30 days.
Clean the Database, Then Keep It Clean
Database bloat is the quiet reason an established store feels slower every year while a fresh install on the same host feels fine. Post revisions, expired transients, orphaned metadata and abandoned plugin tables all pile up.
The highest-value cleanup targets, roughly in order:
- Autoloaded options: query
wp_optionsfor autoload = yes and total the size. Anything above 1MB will slow every single request, including checkout. - Expired transients: uninstalled plugins frequently leave thousands behind.
- Post revisions: limit them to 3 to 5 per product in
wp-config.phprather than deleting blindly. - Orphaned postmeta: rows pointing at products deleted years ago.
A WordPress database optimization plugin handles most of this safely, though you should always take a backup first. Our step-by-step on how to optimize your WordPress database for faster loading covers the queries and the schedule to run them on.
Images, Theme and Plugin Discipline
Product photography is usually 60 to 80 percent of a page’s total weight. Three fixes handle most of it: serve WebP or AVIF, resize files to the largest dimension the theme actually displays (a 2400px original shown at 600px is wasted bandwidth), and lazy-load everything below the fold while explicitly excluding the main product image so LCP does not suffer. A good image optimization plugin automates the conversion and resizing at upload.
Your theme matters just as much. Bloated multipurpose themes ship 400KB of CSS and half a dozen jQuery dependencies you will never use, which is exactly what drives high JavaScript execution time and poor INP. If a rebuild is on the table, compare options in our roundup of the fastest WordPress themes in 2026.
On plugins, quality beats count. Deactivate anything unused, and audit which plugins load their assets on every page rather than only where needed. Sliders, page builder add-ons and review widgets are the usual repeat offenders.
Add a CDN and Do Not Forget the Admin
A content delivery network caches static files on servers near your customers, which cuts latency meaningfully for anyone more than a few hundred miles from your origin server. For international stores the improvement in LCP is often 20 to 40 percent. See why a CDN matters for WordPress for setup specifics.
Finally, optimize the admin panel, since a sluggish backend costs you staff hours nobody measures. Disable the WooCommerce marketing hub and dashboard widgets you ignore, limit the products-per-page setting to 20, and turn off any extension that runs live API calls on the orders screen.
Frequently Asked Questions
How fast should a WooCommerce store load?
Target under 2.5 seconds for LCP on mobile and a TTFB under 600ms on uncached pages like checkout. Conversion research consistently shows measurable drop-off past the 3 second mark, and mobile shoppers abandon faster than desktop users.
Will WP Rocket alone fix a slow WooCommerce store?
It typically improves page load by 30 to 50 percent on cacheable pages, but it can not speed up cart or checkout because those pages are excluded from caching by necessity. Pair it with decent hosting and Redis object caching for the dynamic side.
Is WooCommerce HPOS safe to enable on a live store?
Yes for most stores, provided you back up first and start in compatibility mode, which writes to both the old and new tables for a week or two. Check each extension’s HPOS declaration in WooCommerce, Settings, Advanced, Features before switching fully.
How often should I optimize the WooCommerce database?
Monthly is enough for stores under 100 orders a month; weekly automated cleanup suits busier shops. Focus on transients, Action Scheduler logs and autoloaded options rather than running every available cleanup toggle.
Does site speed affect WooCommerce SEO rankings?
Core Web Vitals are a confirmed ranking signal, though relevance and content quality carry more weight. Speed compounds with on-page work, so combine these fixes with properly optimized product pages and the broader tactics in our guide to SEO for e-commerce.
Want a Second Opinion on Your Store’s Speed?
If you have worked through the caching, images and database and checkout still drags, the bottleneck is usually a single plugin or a hosting limit that a proper audit will surface in an hour. Get in touch with SEO Quirk and we will tell you what is actually slowing the store down.