WooCommerce is heavier than vanilla WordPress — more database queries per page, more dynamic content, less cacheable. Stores running on shared hosting often feel sluggish at checkout or in admin even with low traffic. The good news: a few targeted optimizations can make a WooCommerce store feel as snappy as a static blog. This article covers what works on your ipxcore cPanel hosting account.
Why WooCommerce is heavier
- Cart sessions are dynamic. Every visitor with anything in their cart sees a personalized header (cart count, totals). Standard page caching can't cache these uniformly.
- Stock checks are real-time. Every product page query hits the database to check availability.
- Checkout is uncacheable. By design — payment, address, shipping calculation all happen on the server.
- Admin uses many AJAX endpoints. Loading the orders dashboard fires dozens of database queries.
Step 1: Use LiteSpeed Cache with WooCommerce-aware settings
LSCache (covered in our LSCache article) has WooCommerce-specific support:
- Install and activate LiteSpeed Cache.
- Settings → Cache → Cache Cart: OFF (correct — carts shouldn't be cached).
- Settings → Cache → Cache Logged-in Users: OFF (admin and logged-in customers always see fresh content).
- Settings → Excludes → add WooCommerce paths to "Do Not Cache URIs":
/cart//checkout//my-account/
- Settings → ESI → Enable ESI: ON (allows caching the static parts of pages while keeping cart fragments dynamic).
Result: product browsing pages cache fully (millisecond response times); cart/checkout pages are dynamic (correct behavior).
Step 2: Disable WooCommerce features you don't use
WooCommerce loads its full feature set on every request, including features you may not use:
Disable carts on non-shop pages
By default, WooCommerce loads cart-tracking JavaScript on every page of your site (in case the visitor adds something). Disable on non-shop pages with this snippet in your theme's functions.php or via the Code Snippets plugin:
add_action('wp_enqueue_scripts', function() {
if (function_exists('is_woocommerce')) {
if (!is_woocommerce() && !is_cart() && !is_checkout()) {
wp_dequeue_style('woocommerce_frontend_styles');
wp_dequeue_script('wc-cart-fragments');
wp_dequeue_script('woocommerce');
wp_dequeue_script('wc-add-to-cart');
wp_dequeue_script('wc-cart');
wp_dequeue_script('wc-checkout');
}
}
}, 99);
Turn off cart fragments AJAX
Cart fragments AJAX is what causes the "1 item" badge to update without a page reload. It fires AJAX on every page view and is one of the biggest WooCommerce performance issues.
Disable with the Disable Cart Fragments plugin (one click, free). The cart count updates on the next page load instead of instantly — minor UX trade-off, major speed gain.
Step 3: Database optimization
WooCommerce databases grow rapidly:
Enable High-Performance Order Storage (HPOS)
WooCommerce 8.0+ has HPOS — a new order storage backend that's significantly faster than the legacy WordPress posts table. Enable:
- WooCommerce → Settings → Advanced → Features.
- Enable High-Performance Order Storage (HPOS).
- Enable Custom Order Tables.
WooCommerce migrates your existing orders to the new tables in the background. After migration, order list and order detail pages are 5-10x faster.
Clean up old data
WooCommerce stores expired carts, abandoned sessions, and old logs indefinitely:
- WooCommerce → Status → Tools.
- Run Clear customer sessions (cleans up
wp_woocommerce_sessions). - Run Clear transients.
Schedule the WooCommerce → Status → Logs deletion of logs older than 30 days.
Step 4: Image optimization
Product images are typically 60-80% of a WooCommerce store's page weight. Optimize aggressively:
- Use LSCache image optimization to convert all product images to WebP.
- Or use ShortPixel/Smush for non-LSCache setups.
- Set product image dimensions appropriately: WooCommerce → Settings → Products → Display → Product Images. Most stores oversize and let CSS scale down.
Step 5: PHP version and limits
WooCommerce on PHP 8.x is significantly faster than PHP 7.x. Bump the PHP version per our PHP settings article.
WooCommerce admin specifically benefits from higher memory limits:
memory_limit = 512Mminimum (1024M for stores with 1000+ products)max_execution_time = 300(admin reports can run long)
Step 6: Plugin audit
Most WooCommerce stores accumulate plugins: shipping calculators, payment add-ons, tax plugins, marketing automation, abandoned cart recovery. Each adds queries and PHP overhead.
- Use Query Monitor to identify slowest plugins on the front-end and admin.
- Replace heavy plugins with lighter alternatives or live without them.
- Check WooCommerce → Status → System Status for any plugins flagged as outdated or causing issues.
Step 7: Object caching with Redis or Memcached
Object caching stores the results of expensive database queries in memory, dramatically speeding up dynamic pages (admin dashboard, complex catalog filters). On ipxcore reseller and dedicated infrastructure, we can enable Redis — open a ticket if interested.
For shared hosting, Redis isn't typically available, but the Object Cache Pro plugin can use disk-based caching as a fallback — not as fast as Redis but still helpful.
Measure your improvements
Two key WooCommerce-specific metrics:
- Time To First Byte on a product page: aim for under 200ms (from a fast cache hit), under 500ms uncached.
- Add-to-cart action time: from clicking "Add to cart" to cart updated. Aim for under 1 second total.
Use GTmetrix to baseline before changes, then re-test after each change.
When to upgrade hosting
If you've done all of the above and the site still feels slow, you may have outgrown shared. Signs:
- Server-side response time (TTFB) above 500ms on cached pages
- Frequent timeouts in admin during reports/exports
- Stock checks taking visible seconds at peak hours
WooCommerce stores with 1000+ products, 10+ orders/day, or significant traffic typically run smoother on a reseller plan or a dedicated server — mostly because you stop sharing CPU and memory with neighbors. Open a ticket for a sizing review.