80% off for waitlist membersJoin now and lock in Launch from $39.80 or Lifetime from $49.80 

← Back to Guides

How to Speed Up WooCommerce: A Step-by-Step Guide

WPBundle Team··10 min read
how to speed up woocommercewoocommerce optimization tipsspeed up woocommercewoocommerce performance optimization

Knowing how to speed up WooCommerce is one thing — knowing where to start, and in what order, is another. Applying the wrong optimisations first wastes time and can break things. This step-by-step guide takes you through the process in the right sequence: measure first, fix the biggest problems, and understand the ceiling you're working toward.

TL;DR

Measure before you touch anything. Then: caching, images, script cleanup, CDN, object caching, and hosting. Most stores can get to a 70–85 Lighthouse score this way. To get consistently above 90 on all pages — including cart and checkout — you need a headless architecture.

Step 1: Measure first

Don't touch any settings until you have a baseline. You need to know where the problems actually are, not guess. Run your homepage, a product page, a category page, and your checkout through at least two of these tools:

  • Google PageSpeed Insights — shows real-world Core Web Vitals data from Chrome users plus lab-based Lighthouse scores. The most important tool because it uses Google's own data.
  • GTmetrix — detailed waterfall view showing exactly which requests are slow and why. Set the test region to your primary audience location.
  • Query Monitor — a free WordPress plugin that shows how many database queries each page executes and how long they take. Essential for identifying plugin bloat.
  • WebPageTest — advanced testing with real browsers, multiple locations, and connection speed simulation.
Google PageSpeed Insights showing a typical slow WooCommerce score before optimisation
A typical unoptimised WooCommerce store — the Lighthouse score, Core Web Vitals, and opportunities tell you exactly where to start

Save your baseline scores

Screenshot or note your scores before making any changes. You'll want to compare before and after for each step, and it's easy to lose track of where you started.

Step 2: Install and configure a caching plugin

Page caching is the single highest-impact change you can make to a WordPress and WooCommerce site. Without it, PHP generates every page on every request. With it, most pages are served as pre-built HTML files.

For WooCommerce specifically, choose a plugin that handles the dynamic pages correctly. Cart, checkout, and My Account must never be cached. See our full WooCommerce caching plugin comparison for a detailed breakdown. The quick recommendations:

  • WP Rocket — easiest setup, WooCommerce-safe by default ($59/year)
  • LiteSpeed Cache — best free option (requires LiteSpeed hosting)
  • WP Super Cache — reliable free option for any hosting
  • NitroPack — all-in-one if you want managed CDN too (from $8/month)
WP Rocket WooCommerce tab with exclusion settings configured
After installing WP Rocket, check the WooCommerce tab to confirm cart and checkout are excluded from caching

Always test after enabling caching

Add a product to your cart, go through checkout, and confirm the cart quantity appears correctly across page loads. Some caching configurations cause cart fragments to serve stale data.

60–80%

TTFB reduction from page caching on most stores

15–30

Typical Lighthouse score improvement from caching alone

<5 min

Time to configure WP Rocket correctly for WooCommerce

Step 3: Optimise your images

Images are usually the largest contributor to page weight on WooCommerce product and category pages. Unoptimised product photos can easily run to 500KB–2MB each. At 20 products per category page, that's up to 40MB before a single CSS or JavaScript file loads.

There are three things to fix:

  • Compress and convert to WebP/AVIF — WebP is typically 30–50% smaller than JPEG at equivalent quality. Use Imagify, ShortPixel, or the image tools in LiteSpeed Cache/NitroPack.
  • Set correct dimensions — Uploading a 4000px wide product photo that displays at 400px wastes bandwidth. Resize to display dimensions before uploading, or use WooCommerce's built-in image regeneration.
  • Lazy load below-the-fold images — Most caching plugins include lazy loading. Ensure the hero/first product image is NOT lazy loaded (it's your LCP element and delays rendering if deferred).

Converting product images to WebP alone dropped our page weight by 40%.

WordPress.orgWP.org user· 2024· Imagify support forumView source →

Step 4: Audit and reduce plugin bloat

Every active WordPress plugin adds to your page load time. Some add database queries, some load JavaScript on every page, some add PHP processing that runs even on pages where the plugin does nothing. With 20–30 plugins (typical for a WooCommerce store), this compounds quickly.

Use Query Monitor to see how many database queries are running per page. A product page running 60+ queries is a red flag. Then use the Perfmatters Script Manager or Asset CleanUp Pro to disable plugin scripts on pages where they aren't needed.

The worst offenders

Page builders (Elementor, Divi, WPBakery) load their entire CSS and JavaScript framework on every page — even pages they didn't build. If your theme or some pages use a builder, this is often the largest single performance liability on your store. See our guides on migrating from Elementor, Divi, and WPBakery for context on how much this costs you.

Pros

  • Script Manager lets you disable JS/CSS per page — often the quickest win after caching
  • Removing unused plugins reduces attack surface and DB queries simultaneously
  • Identifying plugin bloat is free with Query Monitor

Cons

  • Disabling plugin scripts incorrectly will break functionality
  • Every plugin removal requires testing — there are no safe assumptions
  • Some plugins with bad performance are also business-critical (review software, loyalty, subscriptions)

Step 5: Disable WooCommerce cart fragments on empty carts

WooCommerce makes an AJAX request (wc-ajax=get_refreshed_fragments) on every page load to update the cart widget in real time. Even when the visitor has an empty cart. Even on your homepage. This request fires before the page becomes interactive and adds latency to every page load for every visitor.

Perfmatters has a one-click option to disable this request when the cart is empty. WP Rocket also optimises cart fragment requests. This is one of the most effective per-change performance wins available for WooCommerce without any visible user impact.

Perfmatters setting to disable WooCommerce cart fragments
Perfmatters makes it easy to disable cart fragment requests when the cart is empty

Step 6: Enable a CDN

A Content Delivery Network caches your static assets (images, CSS, JavaScript) at edge servers around the world. Visitors get those files from a server near them rather than from your origin server, which reduces latency regardless of where your hosting is located.

For WooCommerce, a CDN is particularly valuable for product images. Cloudflare has a generous free tier that works well for most stores. BunnyCDN and KeyCDN are cost-effective paid options. NitroPack includes CDN in its subscription. WP Rocket integrates with RocketCDN and major CDN providers.

Cloudflare is a good starting point

Cloudflare's free tier gives you CDN, DDoS protection, SSL, and basic performance features. Point your nameservers at Cloudflare, enable the speed features, and you'll see improvement without spending anything. Upgrade to Pro ($20/month) for Polish (automatic WebP conversion) and more caching rules.

Step 7: Enable object caching (Redis or Memcached)

Object caching stores the results of expensive PHP operations and database queries in memory so they don't have to be recalculated on every request. For WooCommerce stores with large catalogues, object caching can significantly reduce page generation time for logged-in users and pages that bypass full page caching.

This requires your hosting provider to support Redis or Memcached. Many managed WordPress hosts (WP Engine, Kinsta, Cloudways) enable this by default or as an add-on. The W3 Total Cache, LiteSpeed Cache, and WP Rocket (with add-on) all support object caching backends.

Step 8: Review your hosting environment

After applying the above steps, your remaining bottleneck is often the server itself. Shared hosting with slow PHP execution times limits how much caching can help — caches expire, dynamic pages still need PHP, and the server ceiling is low.

For WooCommerce stores with meaningful traffic, consider:

  • Managed WordPress hosting — Kinsta, WP Engine, and Cloudways all offer PHP environments tuned for WordPress/WooCommerce
  • LiteSpeed-based hosting — enables server-level caching with LiteSpeed Cache plugin (biggest free performance gain available)
  • VPS with proper configuration — more control, but requires server management expertise

What to tackle first

1st

Caching plugin — highest impact change

2nd

Image optimisation — usually highest page weight

3rd

Plugin audit + CDN — compound the gains

Most WooCommerce stores can reach a Lighthouse score of 70–85 with the steps above. If you want to go higher — or if checkout performance is still frustrating despite all these optimisations — the architectural ceiling is the issue. PHP renders WooCommerce's dynamic pages synchronously on every request, and that can't be cached away.

Our WooCommerce speed optimisation guide covers the architectural root cause in detail, and explains why a headless frontend is the step that removes the ceiling entirely.

Ready to go headless?

Join the WPBundle waitlist and get beta access completely free.

Join the Waitlist