TechCognate
Services ▾
What we
do for you.

Build it. Grow it. Make it visible.

PortfolioBlogAbout
Start a Project
MenuClose ✕
Menu

How to Speed Up a WooCommerce Store: Core Web Vitals Fixes That Work

How to speed up a WooCommerce store: Core Web Vitals fixes
Home›Blog›E-Commerce

Guides · E-Commerce

How to Speed Up a WooCommerce Store: Core Web Vitals Fixes That Work

Guide • WooCommerce Performance • Core Web Vitals

A slow WooCommerce store loses shoppers at the worst moments: on a busy category page, when a filter is clicked, or while the cart updates. Generic WordPress speed tips help a blog, but a store has carts, sessions, orders and checkout pages that cannot be cached like a normal post.

Speed also matters for search. Google says it “highly recommends” good Core Web Vitals for success with Search, and Search Console grades your product and category pages using real visitor data.

This guide shows how to speed up WooCommerce: measure first, then fix hosting, order storage, caching, cart fragments, images, plugins, filters and the database, roughly in the order that pays off. If you would rather have a team handle the work, see our WooCommerce development services.

Editorial note: this article contains no affiliate links. Facts were checked against official WooCommerce, WordPress, web.dev and Google documentation on November 10, 2026, and any third-party report is credited where used. WooCommerce and WordPress change with every release, so confirm settings and version requirements in the current documentation before you change a live store.

Quick answer: To speed up WooCommerce, start with real-user Core Web Vitals data, then fix the server side before the front end. Use current PHP and database versions, enable High-Performance Order Storage, cache every page except cart, checkout and my account, add a persistent object cache, and serve right-sized modern images without lazy loading the main image.

  • Targets per web.dev: LCP of 2.5 seconds or less, INP of 200 milliseconds or less and CLS of 0.1 or less, at the 75th percentile of visits.
  • WooCommerce recommends PHP 8.3 or greater, MySQL 8.0 or MariaDB 10.6 or greater, and a 256 MB WordPress memory limit.
  • Exclude cart, checkout and my account pages, plus WooCommerce session cookies, from page caching.
  • Since WooCommerce 7.8, cart fragments only load when the classic Cart Widget is rendered or another script requires them.
  • Use Query Monitor to find slow plugins, and clean transients and scheduled actions from WooCommerce > Status.
14Minute read
14Sections
1Comparison table
Nov 2026Published
Reading map · section length

Each block is one section, sized by how long it is. The orange block is the longest: Common Problems and a Speed Checklist (about 2 min). Tap a block to jump.

Measure First: Field Data, Lab Data and the Thresholds

Record where the store stands before you change anything, or you cannot tell which fix helped.

Know the three Core Web Vitals

According to web.dev, a page passes when it meets all three targets at the 75th percentile of page loads, measured separately for mobile and desktop:

  • Largest Contentful Paint (LCP): 2.5 seconds or less. On a store, this is usually the main product image or a hero banner.
  • Interaction to Next Paint (INP): 200 milliseconds or less. It tracks how fast the page responds to add to cart, variation pickers and filters.
  • Cumulative Layout Shift (CLS): 0.1 or less.

Read PageSpeed Insights the right way

PageSpeed Insights shows field data from real Chrome users over the previous 28 days, and lab data from one simulated Lighthouse run. Google says lab data is useful for debugging but may not capture real-world bottlenecks. Judge success on field data and use lab data to find causes. Low-traffic pages fall back to origin-level data for the whole site.

Use CrUX and Search Console

Field data comes from the Chrome User Experience Report (CrUX). Search Console’s Core Web Vitals report uses it and groups similar URLs. A group’s status is set by its slowest metric, so one Poor CLS score makes the group Poor. After a fix, click Validate Fix and Google monitors the URLs for 28 days.

Write down LCP, INP and CLS for your home page, one category page, one simple product and one variable product, and retest them after each change.

Fix Hosting, PHP and Order Storage

Cart and checkout cannot be cached, so they depend entirely on how quickly PHP and the database respond.

Match WooCommerce’s server recommendations

WooCommerce’s server recommendations page (last updated May 25, 2026) lists these for WooCommerce 10.8 and later:

  • PHP 8.3 or greater, tested up to PHP 8.4
  • MySQL 8.0 or greater, or MariaDB 10.6 or greater
  • WordPress 6.9 or greater, with a memory limit of 256 MB or greater
  • HTTPS support, on Apache or Nginx

Older versions such as PHP 7.4 still work, but WooCommerce warns they are end-of-life. Check your versions under WooCommerce > Status and test upgrades on staging first. If your host cannot offer current versions or server-level caching, compare options in our guide to the best hosting for a WooCommerce store.

Turn on High-Performance Order Storage

High-Performance Order Storage (HPOS) moves orders out of the WordPress posts tables into dedicated order tables. WooCommerce’s docs say this means “fewer read/write operations and fewer busy tables.” HPOS became stable in WooCommerce 8.2 (October 2023) and is the default on new installs, but older stores may still use legacy storage.

  1. Go to WooCommerce > Settings > Advanced > Features and check for incompatible plugins, which block the switch.
  2. Turn on compatibility mode and let the background sync finish under WooCommerce > Status > Scheduled Actions.
  3. Switch to High-Performance Order Storage and keep compatibility mode on for a while so you can switch back if a plugin misbehaves.

Back up first, and use staging if you have a large order history.

Set Up Page Caching With the Right Exclusions

Page caching serves a saved copy of a page instead of building it for every visitor. It is the biggest win for product and category pages, but a store needs careful rules.

Exclude the pages that must stay dynamic

WooCommerce says Cart, My Account and Checkout must not be cached because they show customer-specific information. Many caching plugins exclude them by default, but confirm it in your plugin and any host-level cache.

Exclude WooCommerce cookies

Bypass the cache for visitors carrying these cookies:

  • woocommerce_cart_hash
  • woocommerce_items_in_cart
  • wp_woocommerce_session_
  • woocommerce_recently_viewed
  • store_notice[notice id]

If your caching tool also caches database queries, WooCommerce suggests excluding the _wc_session_ key. For Varnish, WooCommerce’s sample configuration passes cart, my account and checkout URLs, and ?add-to-cart= requests, straight to the server.

Test with a real cart

Add a product to the cart in a private window, browse a few cached pages and confirm the cart count stays correct. WooCommerce notes that password reset loops usually mean My Account is cached at the server level.

Add a Persistent Object Cache With Redis

Page caching does nothing for logged-in customers, cart, checkout or the admin. A persistent object cache helps there by keeping repeated database query results in memory between requests.

Since WordPress 6.1, Tools > Site Health shows “You should use a persistent object cache” when one would help. WooCommerce’s performance guide lists Redis among the server-level caching tools you can enable through your host.

  • Ask your host whether Redis is available on your plan.
  • Install the plugin or drop-in your host recommends, then confirm Site Health reports a persistent object cache in use.
  • Retest cart and checkout after enabling it.

Handle Cart Fragments and the Mini Cart

The wc-cart-fragments script makes an AJAX request to refresh the header cart on cached pages. On older stores it loaded on every page.

What changed in WooCommerce 7.8

In June 2023, WooCommerce 7.8 stopped loading the script everywhere by default. According to the WooCommerce developer blog, it now loads only when:

  • the classic Cart Widget is rendered on the page, including themes like Storefront that hard-code the widget into their templates,
  • another plugin or theme script registers cart fragments as a dependency, or
  • code explicitly enqueues it.

How to check and fix it

  1. Open a blog post, check the network requests for wc-ajax=get_refreshed_fragments, and if it appears, find which theme feature or plugin loads the script.
  2. Replace the classic Cart Widget with the Mini-Cart block, which WooCommerce says does not use the cart fragments API.
  3. If you must keep the widget, WooCommerce’s post includes a filter that limits cart fragments to shop, cart and checkout pages, at the cost of a stale mini cart elsewhere.

Serve Product Images That Load Fast

Product images are usually the LCP element on product and category pages.

Size images to match the theme

WooCommerce’s main sizes are woocommerce_thumbnail for shop grids (300 px wide by default), woocommerce_single for product pages (600 px wide by default) and woocommerce_gallery_thumbnail (100 by 100 px). Adjust them in Appearance > Customize > WooCommerce > Product Images unless your theme sets them, then run Regenerate Shop Thumbnails from WooCommerce > Status > Tools. Upload images close to the largest size your theme displays, not camera originals.

Use WebP or AVIF

WordPress 6.5 added AVIF support where the server’s image library allows it, and the core team says AVIF can be up to 50% smaller than JPEG at the same quality. Check support under Tools > Site Health > Info > Media Handling. The WordPress Performance Team’s Modern Image Formats plugin generates AVIF when supported and WebP otherwise, for new uploads. Existing images need regenerating.

Lazy load everything except the main image

Lazy loading the LCP image delays it. Research on web.dev found WordPress pages using lazy loading had slower LCP, and loading above-the-fold images eagerly reversed it. Since WordPress 6.3, core adds fetchpriority="high" to the likely LCP image and skips lazy loading on the first few images.

  • Confirm in PageSpeed Insights that the LCP image is not marked loading="lazy", and exclude it in any optimization plugin that lazy loads every image.
  • WooCommerce 10.6 made the Product Image block lazy load by default. Developers can change that with the woocommerce_product_image_loading_attr filter where the block sits above the fold.
  • Give every image width and height attributes. web.dev lists missing dimensions as a top cause of layout shift.

Audit Plugins, Filters and Search

Most stores slow down gradually as plugins pile up, each adding queries, scripts and external requests.

Find the slow plugins with Query Monitor

WooCommerce’s performance guide recommends Query Monitor or WP Hive to measure plugin impact. Query Monitor groups database queries by the plugin or theme responsible, flags slow and duplicate queries, and lists external HTTP API calls with timings.

  1. Load a product page, a category page and the cart as an admin.
  2. Sort queries by component and note plugins with many or slow queries or remote calls.
  3. Remove unused plugins and replace heavy ones.

Lighten layered filters

Attribute filters on large catalogs can be expensive. WooCommerce 9.1 added an Optimized updates option for the product attributes lookup table under WooCommerce > Settings > Products > Advanced, which uses faster queries but may not suit some extensions, so test it first. WooCommerce 9.9 added a Product Filters block powered by the Interactivity API that filters without full page reloads.

Watch third-party scripts and search

Chat widgets, pop-ups and tracking tags compete for the main thread, which hurts INP. web.dev recommends limiting main-thread work during page load and breaking up long tasks. Load non-essential scripts only where needed, and check in Query Monitor what each product search runs.

Clean Up the Database

WooCommerce’s performance guide recommends regularly deleting spam comments, post revisions and expired transients, then optimizing tables. Back up the database first.

Use WooCommerce’s built-in tools

Under WooCommerce > Status > Tools you will find:

  • Clear expired transients, which removes expired transient entries.
  • Delete all shop and product transient data, which clears WooCommerce’s temporary shop data.
  • Delete variations without a parent product, for orphaned variations.
  • Regenerate product lookup tables, which runs in the background to keep lookup data matching product data.

Check the Action Scheduler queue

WooCommerce uses Action Scheduler for background jobs. In WooCommerce > Status > Scheduled Actions, large numbers of pending or failed actions usually point to a misbehaving plugin. Completed and canceled actions are purged after about a month by default, and WooCommerce said Action Scheduler 4.0.0, shipping with WooCommerce 11.0, would also purge failed actions older than three months.

Limit revisions

WordPress keeps unlimited revisions by default. Cap them by setting WP_POST_REVISIONS to a number in wp-config.php, then remove old ones with a tool such as WP-Optimize.

Add a CDN, Choose a Lean Theme and Use Block Checkout

Serve static files from a CDN

A CDN serves images, CSS and JavaScript from servers closer to each shopper. WooCommerce’s guide names Cloudflare, Fastly and Amazon CloudFront. If your CDN caches HTML, apply the same cart, checkout, my account and cookie exclusions there.

Pick a theme built for WooCommerce

WooCommerce advises a lightweight theme designed for WooCommerce. Heavy multipurpose themes and page builders often load large CSS and JavaScript bundles on every page, so compare a new theme on staging before switching.

Move to the Cart and Checkout blocks

The Cart and Checkout blocks are the default for new installs since WooCommerce 8.3, while existing stores keep the shortcode checkout until they switch. WooCommerce 10.2 made the Cart block render immediately with placeholders for totals, items and express payments. Confirm your payment and shipping plugins support the blocks, and test an order on staging.

Common Problems and a Speed Checklist

Match what you see in your reports to the likely fix.

ProblemSymptomFix
Slow server responseHigh time to first byte on cart and checkout, even with caching onUpgrade to PHP 8.3+, MySQL 8.0+ or MariaDB 10.6+, and add Redis object caching
Legacy order storageSlow order screens and checkout on stores with many ordersEnable HPOS with compatibility mode, then switch once sync finishes
Cache misconfiguredWrong cart counts or stale cart contents on cached pagesExclude cart, checkout, my account and WooCommerce cookies
Cart fragments on every pageget_refreshed_fragments requests on blog and landing pagesReplace the Cart Widget with the Mini-Cart block
Oversized product imagesPoor LCP on product and category pagesRight-size images, convert to WebP or AVIF, regenerate thumbnails
Lazy-loaded hero imageLCP image flagged as lazy loaded in PageSpeed InsightsExclude above-the-fold images from lazy loading
Images without dimensionsCLS above 0.1 as products and banners loadAdd width and height attributes, reserve space for banners
Heavy plugins and scriptsPoor INP on add to cart, variations and filtersAudit with Query Monitor, remove or replace slow plugins
Bloated databaseSlow admin and large options or Action Scheduler tablesClear transients, review scheduled actions, limit revisions

WooCommerce speed checklist

Based on WooCommerce, WordPress and web.dev documentation as of November 10, 2026.

Server and storage
→ Baseline field data recorded in PageSpeed Insights
→ PHP 8.3 or greater and a current database version
→ HPOS enabled and compatibility mode reviewed
→ Page cache excludes cart, checkout, my account and Woo cookies
→ Persistent object cache reported in Site Health
Front end and upkeep
→ Mini-Cart block in place of the Cart Widget
→ Product images right-sized and served as WebP or AVIF
→ LCP image not lazy loaded
→ Plugins audited with Query Monitor
→ Transients, scheduled actions and revisions under control
Rule of thumb: change one thing at a time, then retest the same four templates. If you change five things at once, you will not know which one helped or which one broke the cart.

On Hostinger? See how to speed up WordPress on Hostinger.

Frequently Asked Questions

What is the fastest way to speed up WooCommerce?

For most stores, correct page caching plus current PHP and database versions give the biggest gains.

Why does my PageSpeed score differ from Search Console?

The score is one lab test. Search Console uses 28 days of real-user CrUX data.

Can I cache the cart and checkout pages?

No. WooCommerce says cart, checkout and my account must stay dynamic.

Should I disable cart fragments?

Since WooCommerce 7.8 they only load where needed. Switching to the Mini-Cart block is the cleaner fix.

Is HPOS safe to turn on for an existing store?

Yes, if your plugins are compatible. Back up, use compatibility mode, and you can switch back.

Do I need Redis for WooCommerce?

Not required, but a persistent object cache helps uncached pages like cart, checkout and the admin.

Should I use WebP or AVIF for product images?

Either beats large JPEGs. AVIF is often smaller but needs server support.

Does page speed affect WooCommerce SEO?

Google recommends good Core Web Vitals for Search, but speed is one signal among many. Our WordPress SEO services cover both speed and content.

Final Take

You can speed up WooCommerce without guesswork if you measure with field data, fix the server and database layer first, and only then tune images and scripts. Current PHP, HPOS, correct cache exclusions, an object cache and the Mini-Cart block solve most of the store-specific problems that generic WordPress advice misses.

Make one change at a time, retest the same templates and let Search Console confirm each fix over 28 days. If you want a specialist team to audit your store and implement these fixes safely, our WooCommerce development team can help.

Sources

Jaykishan Panchal, Founder & CEO, TechCognate
About the author

Jaykishan Panchal

Founder & CEO, TechCognate · SEO Strategist & WordPress Expert

Jaykishan Panchal is the founder of TechCognate and an SEO strategist with 15+ years of hands-on experience driving organic growth for businesses worldwide. He specialises in technical SEO, content strategy and GEO (Generative Engine Optimisation), helping brands stay visible in both traditional search and AI-driven discovery.

  • Technical SEO
  • Content Strategy
  • AI & GEO
  • Google Ads
  • E-Commerce SEO

Leave a Comment

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

Scroll to Top