Short answer: the cart, checkout and account pages cannot be cached, so they are slow for a different reason than your other pages — and your product images are probably enormous. Fix those two and most stores improve immediately.
Why WooCommerce is slower than plain WordPress
Three things it adds that an ordinary site does not have.
Pages that must never be cached. Cart, checkout and my-account are different for every visitor. Cache them and someone sees another person’s basket, so every caching plugin excludes them. Those pages are built fresh every time — which is correct, and it means they need to be genuinely fast rather than hidden behind a cache.
Sessions. Once someone has a cart, WooCommerce tracks them. That is database work on every request from that visitor.
More database tables and far more product data than posts and pages.
So “install a caching plugin” helps your shop and category pages, and does nothing for the three pages where the money is.
Start by finding the weight
Open the store in Chrome, press F12, go to Network, tick Disable
cache, reload, and sort by size.
Do this on a product page and on the cart, not just the homepage. They behave differently, and the cart is where the problem usually hides.
What I find, in order
1. Product images uploaded at full size
The single most common cause on a store.
A 3000-pixel photo shown in a 400-pixel grid still downloads all 3000 pixels. Twenty of those on a category page is tens of megabytes.
The fix: resize before uploading and serve WebP. WordPress generates smaller sizes automatically, but only from the point you upload — images already there may need regenerating after you change the sizes.
2. Plugins loading on every page
Stores accumulate plugins. A reviews plugin, a wishlist, a currency switcher, three marketing tools, a popup.
Most load their CSS and JavaScript on every page, including the checkout where nothing but completing the order matters.
The fix: audit what is installed and remove what is not earning its place. On the checkout particularly, be ruthless — every script there is between a customer and a payment.
3. Cart fragments on pages with no cart
WooCommerce refreshes the mini-cart with an AJAX request so the item count stays right. On a busy store this fires on every page view, cannot be cached, and each request loads WordPress fully.
If your homepage and blog have no cart in the header, they do not need it. Several performance plugins can disable cart fragments on chosen pages; it is a well-known optimisation and is often the biggest single win on a content-heavy store.
Keep it where the mini-cart is actually visible.
4. No object caching
Every page view asks the database the same questions. Object caching with Redis or Memcached keeps the answers in memory.
This matters more for WooCommerce than for a normal site, because there is more to look up — and it helps the uncacheable pages, which page caching cannot touch.
Many managed WordPress hosts offer it; check before adding anything.
5. Housekeeping nobody does
- Expired transients accumulate in
wp_optionsby the thousand - Old order data and sessions build up
- Post revisions on products multiply quietly
Cleaning these is unglamorous and sometimes dramatic on an older store.
Then make the checkout lean
Since it cannot be cached, it must simply be light:
- No sliders, popups, chat widgets or upsell carousels
- Ask for the fewest fields you actually need
- Do not load review or wishlist scripts here
A slow checkout does not cost you a ranking. It costs you the order.
What to measure
Run PageSpeed Insights on a product page and the cart, not the homepage.
If the store has traffic, read the field data rather than the lab score — that is real customers on real connections.
The number to care about is Largest Contentful Paint, under 2.5 seconds. On a product page that is usually the main product image, which brings you back to point one.
One thing to check before any of it
Your hosting. If the store runs on £3-a-month shared hosting with a hundred other sites, there is a floor you cannot optimise past. WooCommerce needs more than a brochure site. Sometimes the honest answer is better hosting, not more plugins.
Store slow and losing orders at checkout? Send me the URL — diagnosing this is most of what I do, and the cause is usually specific rather than “WooCommerce is slow”.