A slow WooCommerce store loses sales at the exact moment someone was ready to buy. The good news is that store slowdowns tend to come from a short list of repeat causes, and working through them roughly in order of impact gets you further, faster, than randomly installing optimization plugins.
Start with images, because they usually matter most
Product photography is often the single biggest contributor to a slow page. A product gallery with a dozen full-resolution images, each several megabytes, has to be downloaded by every visitor before the page feels usable. Compress images before uploading, use appropriately sized dimensions rather than uploading camera-resolution files and letting WordPress scale them down in the browser, and consider a modern format like WebP where your theme and plugins support it.
- Resize product images to the actual display dimensions before upload
- Compress images without visibly degrading quality
- Use lazy loading so images below the fold don't load until scrolled to
- Check that product gallery plugins aren't loading full-size images for thumbnails
Caching, with a store-specific caveat
Caching is one of the most effective speed tools available, but it needs to be configured carefully for a store because cart, checkout and account pages must never be served from a cached copy meant for another customer. A good caching setup excludes cart, checkout, and my-account pages while still caching the product catalog and other pages that look the same to every visitor. Most WooCommerce-aware caching plugins handle this automatically, but it's worth confirming rather than assuming.
Audit plugins for ones actually doing work on every page
It's common for a store to accumulate plugins over time: an old marketing plugin, a page builder no longer in active use, a duplicate SEO tool installed during testing. Every active plugin runs code on some or all page loads, whether or not it's doing anything useful for that particular page. Go through the plugin list and deactivate anything not actively serving a purpose, then check performance again before deciding whether a slow plugin needs replacing rather than just removing.
Database cleanup for stores that have been running a while
WooCommerce accumulates data over time: abandoned cart sessions, expired transients (short-lived cached values WordPress stores in the database), post revisions, and old order data. A database that has grown large and cluttered takes longer to query, which affects nearly everything on the site since WooCommerce queries the database constantly. Periodic cleanup of expired transients and excessive post revisions, done carefully and with a backup taken first, can meaningfully reduce database query time on a store that's been active for a year or more.
PHP version and server-side caching
Running a current PHP version isn't just about security, it's also a real performance factor, since each major PHP version has generally improved execution speed. A store still running an old PHP version is leaving measurable performance on the table for no benefit. Separately, server-level caching layers like object caching, which store frequently requested database results in memory rather than re-querying every time, can significantly reduce database load on a busy store, though setting these up usually requires either hosting support or some technical comfort.
A CDN helps, but mostly with static assets
A content delivery network caches and serves static files, images, stylesheets, scripts, from servers located closer to each visitor, which can noticeably improve load time for a geographically spread-out customer base. It's worth setting up if the store serves visitors across a wide area, but it's important to be realistic about what it does and doesn't help with: it speeds up static asset delivery, not the dynamic database work behind checkout, product search or a logged-in account page, which still runs on the origin server regardless of how the images are delivered.
Checkout-specific slowdowns
Checkout deserves separate attention because it's the page where speed most directly affects revenue. Common checkout-specific issues include too many active payment gateway plugins loading unnecessary scripts, shipping calculation plugins making external API calls on every page load rather than only when needed, and tax calculation services adding noticeable delay. Test checkout speed specifically, not just the homepage, since a fast catalog and a slow checkout is still a store that loses sales.
- Test checkout load time separately from the rest of the site
- Check how many active gateway and shipping plugins load scripts on the checkout page
- Confirm external API calls (tax, shipping, fraud checks) aren't happening more often than necessary
- Watch for plugin conflicts that only appear during the checkout process specifically
Measure before and after, not just once
It's tempting to make several changes at once and assume the store is faster, but without measuring before and after each significant change, it's hard to know which fix actually helped and which one didn't matter. Use a consistent testing method, such as the same page tested from the same tool at a similar time of day, and test more than just the homepage, since a fast homepage with a slow product or checkout page is still a store with a real speed problem where it counts most.
When it's a hosting resource problem, not a configuration problem
If images are optimized, caching is configured correctly, plugins have been audited and the database is reasonably clean, and the store is still slow, particularly during busy periods, that's a sign the hosting environment itself may not have enough CPU or memory allocated for the store's actual dynamic workload. This is where WordPress optimized hosting, built with more isolated resources and WordPress-specific tuning, tends to show a real difference over general shared hosting, especially once a catalog and order volume have grown past what a smaller plan was sized for.
Work through image optimization, caching configuration, plugin audit and database cleanup first, since those steps are free or low-cost and often solve the problem outright. If the store is still sluggish under real traffic after that, the next lever to check is whether the hosting resources actually match the store's dynamic workload, not just its visitor count.
Choose hosting that fits the site.
Compare the shared hosting plans or explore the separate WordPress optimized range.