Skip to content
Back to Blog
Performance9 min read

Fix a Slow WooCommerce Store: 12-Step Checklist

A top-to-bottom checklist to diagnose and fix a slow WooCommerce store. Each step is concrete and verifiable for immediate results.

Written by Abdul AbrorTechnical Hosting Support Engineer
Fix a Slow WooCommerce Store: 12-Step Checklist
On this page

A sluggish WooCommerce store loses sales. Customers won't wait 5 seconds for a product page to load. This checklist walks you through 12 concrete, verifiable steps to speed things up. No fluff—just commands, configurations, and things you can check right now.

1. Check Hosting and Server Resources

Start at the bottom. Your hosting plan must actually support a WooCommerce store. Shared hosting with 512MB RAM? That's your bottleneck.

  • Check server specs: SSH in and run free -m for memory, df -h for disk space, top for CPU load. If swap usage is high, you need more RAM.
  • Look for resource limits: Some shared hosts throttle CPU. Ask your provider or check your control panel.
  • Verify PHP version: WooCommerce 6.0+ requires PHP 7.4 or newer, but 8.0+ is much faster. Run php -v on the server or check via Tools > Site Health in WP admin.
  • Test with a staging environment: If you can't upgrade hosting, at least set up a staging site and repeat this checklist there.

If your server is underpowered, nothing else will fully fix the slowness. Consider upgrading to a VPS or dedicated server.

2. Use a Performance Plugin (Caching & Minification)

A caching plugin generates static HTML copies of your pages. For WooCommerce, dynamic cart and checkout pages must be excluded from cache, but product pages and shop archives can be cached.

  • Install a caching plugin: WP Rocket, W3 Total Cache, or Flying Press. Configure page caching, browser caching, and minification of CSS/JS.
  • Exclude WooCommerce pages: In your caching plugin settings, add /cart/, /checkout/, /my-account/, and any AJAX endpoints to the exclusion list.
  • Enable object caching: If your host supports Redis or Memcached, enable object cache to reduce database queries. Use a plugin like Redis Object Cache.
  • Minify HTML, CSS, JavaScript: But test carefully—minification can break scripts. Enable only after verifying the site still works.

3. Optimize Images

Images are the heaviest assets on most WooCommerce stores. A single 2MB product photo on a category page with 20 products = 40MB of images. That's insane.

  • Compress all existing images: Use a plugin like ShortPixel or Imagify, or run jpegoptim *.jpg && optipng *.png on the server.
  • Serve WebP format: Many caching plugins can generate WebP versions automatically. Or use a service like Cloudflare Images.
  • Resize to appropriate dimensions: A product image doesn't need to be 4000px wide. Set maximum width in WooCommerce Settings > Products > Display.
  • Lazy load off-screen images: Most caching plugins include lazy loading. It defers loading images until the user scrolls near them.
  • Use a CDN for images (see step 6).

4. Database Optimization

WordPress stores everything in a MySQL database. Over time, post revisions, trashed items, and transients accumulate. A cluttered database = slow queries.

  • Delete post revisions: Run this WP-CLI command: wp post list --post_type=revision --format=ids | xargs wp post delete --force.
  • Clear transients: wp transient delete --all.
  • Optimize tables: wp db optimize.
  • Schedule regular cleanups: Use a plugin like WP-Optimize or Advanced Database Cleaner.
  • Check for slow queries: Enable MySQL slow query log via your hosting panel or SET GLOBAL slow_query_log = 1;. Review logs with mysqldumpslow.

5. Limit Plugins and Check for Conflicts

Every plugin adds PHP code and possibly JavaScript. More plugins = more work for the server.

  • Audit active plugins: Deactivate any plugin you don't absolutely need. Pay attention to plugins that run on every page, like contact forms, sliders, and analytics.
  • Check for plugin conflicts: Temporarily deactivate all plugins except WooCommerce and a minimal theme (Storefront). Test speed. If it's fast, reactivate plugins one by one to find the culprit.
  • Avoid heavy page builders: Visual Composer and Elementor can bloat page size. Consider using a lightweight theme like GeneratePress or Astra.

6. Use a CDN

A Content Delivery Network (CDN) serves static files (images, CSS, JS) from servers near your visitors. This reduces latency and offloads your origin server.

  • Choose a CDN: Cloudflare offers a free tier. Others: BunnyCDN, KeyCDN, StackPath.
  • Set up CDN: Point your domain's DNS to the CDN provider. Configure caching rules for static assets (cache for 30 days).
  • WooCommerce dynamic content bypass: Ensure cart, checkout, and account pages are excluded from CDN caching or use a plugin that handles this.
  • Check if it's working: Use curl to see headers: curl -I https://yourstore.com/wp-content/uploads/2021/01/image.jpg. Look for cf-cache-status: HIT (Cloudflare) or similar.

7. Enable GZIP Compression and Browser Caching

Reduce the size of HTML, CSS, and JS files sent to the browser. Also tell the browser to keep files in cache for a while.

  • GZIP compression: Add this to your .htaccess (if Apache) or nginx config: apache <IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/json </IfModule>
  • Browser caching: Add to .htaccess: apache <FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"> Header set Cache-Control "max-age=2592000, public" </FilesMatch>
  • Test: Use GTmetrix or Google PageSpeed Insights. They'll tell you if compression and caching are enabled.

8. Optimize WooCommerce Settings

WooCommerce itself has options that affect performance. Some features are rarely used but consume resources.

  • Disable unused features: In WooCommerce > Settings > Products > Inventory, turn off stock management if you don't use it. Disable reviews if you don't need them.
  • Limit product revisions: Add this to wp-config.php: define('WP_POST_REVISIONS', 5); (or 0 to disable).
  • Use a queue for emails: WooCommerce sends transactional emails synchronously. Use a plugin like WP Mail SMTP to queue them off-load.
  • Reduce cart fragments: By default, WooCommerce updates the cart via AJAX on every page. If you don't show the cart count in the menu, disable it with a snippet: php add_filter( 'woocommerce_cart_fragments', '__return_empty_array' );

9. Reduce External HTTP Requests

Each external font, analytics script, or social widget triggers an extra DNS lookup and HTTP request.

  • Self-host Google Fonts: Use a plugin like OMGF or simply download the fonts and serve locally.
  • Combine external scripts: If possible, merge Google Analytics, Facebook Pixel, etc., into one request via a tag manager.
  • Defer non-critical scripts: Add defer or async attributes to scripts that aren't needed upfront. Caching plugins can do this.
  • Remove unused tracking: Audit GA events or Facebook events that might be firing unnecessarily.

10. Server-Side Caching (Redis/Varnish)

If you're on a VPS or dedicated server, you can set up low-level caching for even faster response times.

  • Redis for object cache: Install redis-server on your server. Configure WordPress to use Redis with the Redis Object Cache plugin. Run wp redis enable.
  • Varnish for full-page cache: Install Varnish in front of Apache/Nginx. Set it to cache static pages. For WooCommerce, configure Varnish to bypass dynamic pages. Use a plugin like Varnish HTTP Purge.
  • Verify it's working: Check response headers for X-Varnish: 123456 or similar.

11. Monitor with Tools

Don't guess — measure. Several tools give you specific performance metrics.

  • Google PageSpeed Insights: Tests mobile and desktop. Focus on Largest Contentful Paint (LCP) and Cumulative Layout Shift (CLS).
  • GTmetrix: Shows waterfall charts. Identify which requests take the longest.
  • Query Monitor: A WordPress plugin that shows database queries, PHP errors, and hooks. Look for slow queries or repeated queries.
  • New Relic or Blackfire.io: For deep server-side profiling. If you have access, check for bottlenecks in PHP execution.

12. Update Everything

Outdated software often contains performance bugs or security holes that slow things down.

  • Update PHP: PHP 8.0+ is significantly faster than 7.x. Ask your host to upgrade.
  • Update WordPress core, themes, plugins: Use wp core update and wp plugin update --all via WP-CLI.
  • Update WooCommerce: Always keep the latest version.
  • Check compatibility: After updates, test the store thoroughly. Use a staging site first.

FAQ

Q: How long does it take to run through this checklist?
A: It depends on your store size. For a small store with a few dozen products, a few hours. For a large store with thousands of products, plan for a full day.

Q: My store uses a page builder. Should I switch?
A: If possible, yes. Page builders add significant bloat. If you can't switch, at least minify and cache aggressively.

Q: Will caching break my cart and checkout?
A: Not if you properly exclude those pages. Test after enabling caching.

What to check first

If you only have 30 minutes, prioritize these: 1. Check your hosting plan and PHP version. 2. Enable a caching plugin with proper exclusions. 3. Optimize and compress images. 4. Deactivate unnecessary plugins.

Those four steps often yield 80% of the performance gain. The rest is fine-tuning. Run through this checklist periodically—stores evolve, and so do performance bottlenecks.