WooCommerce Speed Optimization: How to Make Your Online Store Faster
How to speed up a WooCommerce store: hosting, caching with the right exclusions, cart fragments, product images, plugins, database clean-up and object caching.

On this page
- Cart, checkout and My Account pages can't be page-cached, so a fast store needs capable hosting and ideally an object cache, not just a caching plugin.
- Cache shop and product pages but exclude the cart, checkout and account pages, and test with a real add-to-cart in a private window.
- Control cart fragments, heavy product images and extension scripts that load on every page, and keep sessions and scheduled actions tidy in the database.
A slow online store loses sales in a way you rarely notice. A shopper on mobile data taps a product from Instagram, waits a few seconds, and goes back to scrolling. WooCommerce can be fast, but a store is harder to speed up than a normal business website because some of its most important pages can't simply be cached. This guide covers the store-specific fixes; for general causes, see why WordPress sites get slow.
Why WooCommerce stores are harder to speed up
On a brochure site, almost every visitor sees the same page, so a saved copy can be served instantly. A store works differently:
- The cart, checkout and My Account pages are different for every shopper and must be built fresh each time
- Logged-in customers usually bypass the page cache completely
- Large catalogues, product variations and filters mean heavier database queries
- Payment, shipping, review and marketing extensions each add their own scripts and processing
So a fast store needs two things: good caching for the pages that can be cached, and a capable server for the pages that can't.
Measure the right pages first
Don't test only the homepage. Check each type of page, and always test on a phone:
| Page | What to check |
|---|---|
| Homepage and category pages | Load time on mobile, image weight, number of scripts |
| Product pages | How quickly the main image appears, gallery and review scripts |
| Cart and checkout | Server response time, add-to-cart, quantity and coupon speed |
PageSpeed Insights is useful for the shop and product pages. For the cart and checkout, time the steps yourself: add a product, change the quantity, apply a coupon and move to payment. If one step drags, that's where to dig. On a staging copy, a debugging plugin such as Query Monitor can show slow database queries and which plugin caused them.
Hosting matters more for stores
Because cart and checkout pages are built fresh for every shopper, they depend directly on your server. Cheap shared hosting that copes with a brochure site can struggle when several people check out at once, especially during a festival sale. When reviewing hosting for a store, look for:
- A current, supported PHP version
- Enough memory and PHP workers to handle several uncached requests at the same time
- Server-level caching and support for an object cache such as Redis
- A data centre in or near India if most of your customers are here
Check current plans with your host, and ask directly how much simultaneous checkout traffic your plan can realistically handle.
Page caching, with the right exclusions
Cache the pages that are the same for everyone: the homepage, category pages, product pages and blog posts. Never cache:
- The cart, checkout and My Account pages
- Pages for a visitor who has items in their cart or is logged in
WooCommerce sets cookies such as woocommerce_items_in_cart and woocommerce_cart_hash when a shopper adds something to the cart, and good caching plugins and hosts use them to skip the cache for that shopper. Most detect WooCommerce automatically, but always test: open a private window, add a product, then check the cart count and prices on other pages. If you show prices in different currencies or change them by location, test extra carefully, because a cached page can show the wrong price. More in WordPress caching explained.
Cart fragments
The small cart icon in your header that shows the number of items is often updated by a script called cart fragments. It sends a background request (you may see get_refreshed_fragments in a speed test waterfall) that can't be cached. If it runs on every page for every visitor, it adds server load and delay even to pages that are otherwise cached.
Recent WooCommerce versions no longer load this script everywhere by default, but many themes and header mini-cart widgets still do. Your options include:
- Loading it only on shop, product and cart pages
- Using a theme or mini-cart that updates the count without it
- Turning it off on blog and information pages through a performance plugin setting, where one is available
After any change, check that the cart count still updates correctly when a product is added.
Product images and galleries
Product photos are usually the heaviest part of a store. Upload images at a sensible size, compress them and serve modern formats such as WebP. In classic themes, check the product image sizes under Appearance > Customize > WooCommerce > Product Images so the store isn't generating oversized thumbnails.
- Lazy-load images further down the page, but not the main product image, which is often the largest element Google measures
- Keep gallery sliders, zoom and 360-degree viewers light, and load them only on product pages
- Use a click-to-play embed for product videos instead of loading the full video player upfront
See image optimisation for WordPress for the details.
Plugins, scripts and the theme
Stores collect plugins over time: reviews, wishlists, filters, pop-ups, live chat, tracking pixels and more. Many load their CSS and JavaScript on every page, even where they do nothing.
- Remove extensions you no longer use, and replace heavy ones where a lighter option does the job
- Stop scripts loading where they aren't needed; a payment gateway's script, for example, only needs to load on checkout
- Delay chat widgets and marketing scripts until the visitor interacts with the page
- On large catalogues, choose product filters carefully, as some run heavy queries on every click
- Avoid building product and category templates from bloated page-builder layouts
Database, orders and object caching
An active store's database grows every day with orders, sessions, logs and background tasks. Keeping it tidy helps the uncached pages and the admin area:
- Expired sessions and transients: clear them regularly
- Scheduled Actions: WooCommerce and many extensions log background tasks, and old completed or failed actions can pile up
- Autoloaded options: leftover settings from removed plugins can slow down every request
- Order storage: High-Performance Order Storage (HPOS) keeps orders in their own tables. Newer stores use it by default; older stores can check under WooCommerce > Settings > Advanced > Features, after confirming their extensions are compatible
An object cache such as Redis keeps the results of database queries in memory, which particularly helps pages that can't be page-cached, such as the cart, checkout and admin. Ask your host whether it's available on your plan. Always take a backup before any clean-up; see database optimisation.
Want a faster store without breaking the checkout? See WordPress speed optimisation or WooCommerce development.
Need help with your website?
I'm Sameer, a freelance WordPress developer building fast, SEO-friendly websites since 2020. Tell me what you need and I'll reply with a plan and a fixed quote within 24 hours.


