Why your WooCommerce store is slow (and the 20% of fixes that matter)

Every WooCommerce speed article gives you the same list: install a caching plugin, optimize images, get better hosting. That advice isn’t wrong — it’s just unranked. Without knowing which problem your store actually has, you’ll spend a weekend on fixes that move your load time by 50 milliseconds while the real bottleneck sits untouched.

Find the bottleneck first

Open your store in a private browser window and load a product page with DevTools open (Network tab). Look at two numbers:

  1. TTFB (time to first byte) — if this is over 600ms, your problem is the server: slow hosting, no page cache, or a plugin doing heavy queries on every request.
  2. Total transfer size — if the page ships more than ~2MB, your problem is the front end: oversized images, too many scripts, bloated themes.

These two failure modes have completely different fixes, and almost every slow store has exactly one of them as the dominant cost.

If the server is slow

A page cache is worth more than every other optimization combined. When a cached page is served, WordPress doesn’t boot, plugins don’t run, and the database isn’t touched. Check whether your host provides server-level caching before reaching for a plugin — server-level is faster and has fewer cart conflicts.

If the front end is heavy

Run the page through PageSpeed Insights and look at the “largest contentful paint element”. On product pages it’s almost always the product image. Serve it in WebP, sized to its rendered dimensions, with fetchpriority="high" — that single change regularly cuts LCP by a second.

The fixes that don’t matter (yet)

Minifying CSS, tweaking heartbeat intervals, and disabling emojis are real optimizations with tiny payoffs. Do them last, if ever. The 20% that matters: page cache, image discipline, and removing the two or three plugins that load scripts on every page while being used on none of them.

Get ecommerce engineering tips in your inbox

One practical, actionable article at a time. No spam, unsubscribe whenever.