When a 4,000-product store came to us with a 5.8-second Largest Contentful Paint and falling conversion rates, the owner assumed a hosting migration was inevitable. It wasn’t. Here is exactly what we did instead, in order, with the impact of each step.
Step 1: Full-page caching with WooCommerce awareness (5.8s → 3.4s)
The store had caching disabled entirely because a previous plugin had served stale cart fragments. A cache that understands WooCommerce sessions — excluding cart, checkout and account pages while caching everything else — recovered the biggest single chunk of load time.
Step 2: Delay third-party JavaScript (3.4s → 2.6s)
Chat widgets, heatmaps and three separate marketing pixels were loading before the product image. Delaying every third-party script until first interaction cut main-thread blocking time by over 70% with zero functional difference for real shoppers.
Step 3: Image discipline (2.6s → 2.1s)
WebP conversion, explicit width and height attributes on every product image, and eager loading for the above-the-fold hero while lazy-loading the rest.
Step 4: Database cleanup (2.1s → 1.9s)
Six years of revisions, expired transients and orphaned order meta had bloated the database to 4GB. Cleanup and index optimisation shaved 200ms from server response time on every uncached request.
Results
LCP: 1.9s. Mobile performance score: 94. And the number the owner cares about: checkout conversion up 23% quarter over quarter. Total time invested: one working day. Hosting bill: unchanged.