WooCommerce speed: what to fix first

WooCommerce stores need caching where it is allowed and a light cart and checkout. What the data shows, what the plugin loads and caches, and what to fix first.

IntermediateHow-to7 min readUpdated October 30, 2026

In this guide
  1. What the data shows
  2. What WooCommerce does by itself
    1. It marks some pages as not cacheable
    2. It loads its files on every page
    3. It keeps customer sessions in the database
    4. It can redirect the first visit
    5. It offers dedicated order tables
  3. The fixes that pay off first
    1. 1. A page cache that does the right thing
    2. 2. A persistent object cache
    3. 3. A host that matches the store
    4. 4. Product images
    5. 5. A light theme, and few plugins
    6. 6. Trim the database
  4. How to measure a store
  5. Mistakes to avoid
  6. Check your own page
  7. Sources

What the data shows

The 2025 Web Almanac's ecommerce chapter compares platforms using real-visitor data. It counts a site as good only when it passes all three Core Web Vitals. These are the mobile results for the largest platforms:

PlatformGood LCPGood INPGood CLSPasses all three
Shopify86%90%92%76%
Squarespace Commerce76%96%89%69%
OpenCart80%93%88%68%
Wix eCommerce76%85%95%66%
PrestaShop65%89%81%50%
WooCommerce39%88%85%35%
Magento52%87%64%35%

On desktop the pattern is the same: 33% of WooCommerce stores pass, against 76% for Shopify. The Lighthouse medians tell the same story in the lab. On mobile, the median performance score was 38 for WooCommerce stores and 55 for Shopify.

Read this carefully:

What WooCommerce does by itself

These facts come from the WooCommerce source code.

It marks some pages as not cacheable

On the cart, checkout and account pages, WooCommerce defines the constants DONOTCACHEPAGE, DONOTCACHEOBJECT and DONOTCACHEDB, which many caching plugins respect, and it adds WordPress's no-cache headers. In the current code, it removes the no-store directive for visitors who are not logged in, so the browser's back/forward cache is not blocked. See the back/forward cache.

This is correct. A cached cart page would show one customer another's basket. Your job is to make sure the cache and the host respect it, and to keep those pages light.

It loads its files on every page

WooCommerce hooks into the standard script loading on every front-end page. In the version we read, it enqueues a global woocommerce script and three stylesheets: a layout sheet, a general sheet, and one for screens up to 768 pixels wide. If AJAX add-to-cart is on, it adds one more script. On a store, that is expected. On a blog post or an "about" page, it is cost without benefit. A developer can remove the styles with the woocommerce_enqueue_styles filter, or dequeue the script on pages that are not part of the store. Test the cart and checkout after any change.

It also loads more on specific pages:

It keeps customer sessions in the database

For shoppers, WooCommerce keeps a session in its own database table and sets a cookie. By default the session lasts two days, or a week for a logged-in customer. The code caps session lifetimes at 30 days and logs a warning when a site asks for more, because long sessions can cause performance problems and a very large session table. Leave the defaults unless you have a reason.

It can redirect the first visit

If the default customer address is set to the option that geolocates with page-caching support, WooCommerce redirects the visitor, with a 307 status, to the same page with a v query parameter that holds a hash of the location. This keeps cached pages correct for each location, and it adds a redirect to the first visit. Check the Network panel for it. If you do not need location-based prices or taxes before checkout, a simpler setting avoids the hop.

It offers dedicated order tables

WooCommerce can store orders in tables of their own instead of in the WordPress posts tables. Its settings call this "High-performance order storage" and mark it as recommended, and they offer a compatibility mode that keeps both in sync. Changing it affects plugins that read orders, so check that yours support it, test on a copy, and back up first.

The fixes that pay off first

1. A page cache that does the right thing

Shop, category and product pages are the same for most visitors, so a page cache helps a great deal. Check that:

See WordPress caching for the layers, the checks and the mistakes to avoid.

2. A persistent object cache

A store runs many database queries for products, prices, taxes and sessions, and a lot of that is repeated. WordPress's Site Health suggests a persistent object cache for larger sites, and WooCommerce itself writes cart sessions to the object cache when one is present. Ask your host for Redis or Memcached. See WordPress caching.

3. A host that matches the store

Uncached pages, which include every cart and checkout, depend on the server's processor, memory and database. If those pages are slow even with a cache on the rest of the site, look at hosting before anything else.

4. Product images

Product pages are mostly pictures. The main product image is usually the Largest Contentful Paint element, and category pages show many thumbnails. Make sure the first image is not lazy-loaded, that every image has the right size for its slot, and that galleries do not load all their pictures at once. See WordPress images.

5. A light theme, and few plugins

A store needs more plugins than a blog: payments, shipping, taxes, email, reviews and search. Each adds files and queries. Audit them as in themes and plugins. Pay particular attention to the ones that load on every page: review widgets, chat, pop-ups, currency switchers and tracking. If you use a page builder, see page builders.

6. Trim the database

Stores generate sessions, orders, logs and transients. Look at the autoloaded options and the transients first. See database cleanup.

How to measure a store

Mistakes to avoid

Check your own page

Run the free audit on a product page and on a category page. Open LCP request discovery, Improve image delivery and Reduce unused JavaScript. Then run it on the cart. If the product pages are slow and the cart is much faster, the pages are heavy. If the cart is also slow, the server is the first place to look.

Sources

Start here

Free website audit

Live Google data for any public page: mobile and desktop.

Mobile + desktop · Lighthouse lab test · Real-user Chrome data when Google has it

Rather have this done for you? WordPress speed · Book a call

Related guides

All guides →