The Problem
A US-based news publishing site with 500,000 monthly visitors was loading in 8.2 seconds on average — causing a 76% bounce rate and dropping search rankings. Google's Core Web Vitals showed all three metrics in the red. Ad revenue was declining as advertisers require minimum performance thresholds.
Performance Audit
Our team ran a full server and WordPress performance audit:
- No server-side caching — every page load ran 140+ database queries
- Images uncompressed — hero images averaging 4.2MB each
- 23 active plugins — 6 loading JavaScript on every page regardless of need
- PHP 7.4 in use — 40% slower than PHP 8.2 for WordPress
- MySQL query cache disabled
- No CDN — all assets served from single origin server in Virginia
- Google Fonts loading 8 separate font weight files
Optimisation Implementation
- Upgraded PHP 7.4 → 8.2 — immediate 35% server response improvement
- Implemented Redis object caching — database queries dropped from 140 to 8 per page load
- Configured Nginx FastCGI page cache — cached pages served in 12ms (vs 1.8s uncached)
- Installed Cloudflare Pro — CDN for all static assets, images served from 300+ edge nodes
- Bulk image optimisation via ShortPixel — average image size 4.2MB → 180KB (96% reduction)
- Implemented lazy loading for all below-fold images
- Moved 6 non-critical plugin scripts to footer with defer attribute
- Self-hosted Google Fonts — eliminated 3 external DNS lookups
- Enabled MySQL query cache and optimised all tables
Results
Page load time dropped from 8.2 seconds to 0.9 seconds — an 89% improvement. All three Core Web Vitals turned green within 2 weeks. Bounce rate dropped from 76% to 34%. The site's organic search traffic increased 28% over the following 3 months as Google rewarded the improved performance.