How We Cut Page Load Times by 63%: A Step-by-Step Case Study | AuditMySite

· 5 min read

The Starting Point: A 6.8-Second Load Time

In January 2026, a Sacramento-area home services company came to us with a problem. Their website — a WordPress site with 45 pages — was loading in 6.8 seconds on mobile (LCP). Their bounce rate was 72%, and organic traffic had dropped 28% over the previous six months despite consistent content publishing.

The site was built on WordPress with the Elementor page builder, running 34 plugins, hosted on a shared hosting plan at $8/month. Sound familiar? This is the exact setup we see on 60% of small business sites we audit.

Here's exactly what we did, in order, and the impact of each change.

Phase 1: Quick Wins (Week 1)

Image Optimization — Impact: -1.8s LCP

The hero image on the homepage was a 4.2MB PNG. The portfolio page had 24 project photos averaging 2.1MB each. Total image weight: 58MB across the site.

What we did:

  • Converted all images to WebP format using ShortPixel (bulk processing)
  • Implemented responsive images with srcset — serving 400px wide images on mobile instead of 1600px
  • Added explicit width and height attributes to prevent CLS
  • Lazy-loaded all images below the fold using loading="lazy"
  • Preloaded the LCP hero image with <link rel="preload" as="image">

Results: Total image weight dropped from 58MB to 4.2MB (93% reduction). Hero image went from 4.2MB to 89KB. LCP dropped from 6.8s to 5.0s.

Plugin Audit — Impact: -0.6s LCP

Of 34 installed plugins, we found:

  • 3 plugins doing the same thing (SEO: Yoast, Rank Math, and All in One SEO)
  • 2 social sharing plugins (one hadn't been updated since 2023)
  • 4 plugins that loaded scripts on every page despite only being used on one page
  • A slider plugin loading 340KB of JavaScript on pages with no sliders

We removed 14 plugins entirely and replaced 3 others with lighter alternatives. The remaining 17 plugins were configured to load conditionally (using Asset CleanUp Pro) so they only loaded on pages where they were actually needed.

Results: JavaScript payload reduced by 420KB. LCP improved to 4.4s.

Phase 2: Infrastructure Changes (Week 2)

Hosting Migration — Impact: -1.2s TTFB

The shared hosting environment had a Time to First Byte (TTFB) of 1,800ms. That means the server took nearly 2 seconds just to start responding before any content loaded.

We migrated to Cloudways (DigitalOcean 2GB droplet at $28/month) with:

  • Server-level caching (Varnish) configured
  • PHP 8.3 with OPcache enabled
  • Redis object caching for database queries
  • HTTP/2 with Brotli compression

Results: TTFB dropped from 1,800ms to 280ms. LCP improved to 3.2s.

CDN Implementation — Impact: -0.4s

Cloudflare free tier with the following configuration:

  • Full SSL/TLS encryption
  • Auto-minification for HTML, CSS, and JS
  • Browser cache TTL set to 1 month for static assets
  • Polish (image optimization) enabled
  • Edge caching for static pages using page rules

Results: LCP improved to 2.8s. Static asset delivery dropped from 200ms to 40ms for users within North America.

Phase 3: Code-Level Optimization (Weeks 3-4)

Critical CSS Extraction — Impact: -0.2s

Elementor generates a single CSS file of 380KB that loads on every page, even though any given page only uses about 40KB of those styles. We implemented critical CSS extraction using the WP Critical CSS plugin:

  • Extracted above-the-fold CSS and inlined it in the <head>
  • Deferred the remaining CSS to load asynchronously
  • Removed unused Elementor modules' CSS using Jesuspended (custom script)

JavaScript Deferral — Impact: -0.1s

All non-critical JavaScript was deferred using the defer attribute. Google Analytics, Facebook Pixel, and chat widget scripts were loaded with a 3-second delay using requestIdleCallback.

Combined Phase 3 Results: LCP reached 2.5 seconds. Total load time (fully loaded) dropped from 11.2s to 4.1s.

The Results: 90 Days Later

Here's the before/after comparison:

  • LCP: 6.8s → 2.5s (63% improvement)
  • Total page weight: 8.4MB → 1.2MB (86% reduction)
  • TTFB: 1,800ms → 280ms (84% improvement)
  • CLS: 0.32 → 0.04 (87% improvement)
  • HTTP requests: 127 → 34 (73% reduction)

Traffic and Business Impact

  • Organic traffic: +34% over 90 days (partially due to CWV improvement, partially seasonal)
  • Bounce rate: 72% → 48% (33% improvement)
  • Average session duration: 1:12 → 2:34 (113% improvement)
  • Contact form submissions: +41% (same traffic volume showed higher conversion)
  • Mobile Core Web Vitals: All three metrics now "Good" in CrUX data

Cost Breakdown

  • Hosting upgrade: $8/month → $28/month (+$20/month)
  • ShortPixel image optimization: $4.99 one-time for 10,000 images
  • Cloudflare CDN: Free tier
  • Total monthly cost increase: $20
  • Additional monthly revenue from improved conversions: ~$2,400

The ROI on this optimization was 120:1 within the first 90 days.

Lessons Learned

  1. Images are almost always the #1 issue. Start there. It's the easiest win with the biggest impact.
  2. Hosting matters more than most plugins. No caching plugin can fix a server with 2-second TTFB.
  3. Plugin audits are underrated. Most WordPress sites have 5-10 plugins they don't need.
  4. Measure with field data, not just lab data. PageSpeed Insights lab scores can be misleading. CrUX field data is what Google uses for rankings.
  5. Speed improvements compound. Faster pages → lower bounce rate → more pages per session → more conversions → better engagement signals → higher rankings → more traffic.

Your Next Steps

Want to know where your site stands? Run a free test at PageSpeed Insights and focus on the field data section. If your LCP is above 2.5s or your INP is above 200ms, you're leaving traffic and revenue on the table.

For businesses that rely on visual presentation — like restaurants with digital menus — speed isn't just about SEO. It directly impacts whether customers engage with your content or bounce to a competitor.

Ready to audit your site?

Run a free SEO scan and get actionable recommendations in seconds.

Start Free Scan →