The starting point
Field data said 4.2 seconds at the 75th percentile. Lab data said 2.1. The gap was the whole story: the server was fine when idle and fell apart under real traffic.
What we changed, in order
- Moved to NVMe and enabled server-level caching.
- Converted 180 hero images to AVIF.
- Deferred three third-party scripts.
What did nothing
Minifying CSS saved 4 KB and zero milliseconds. Preloading a font that was already cached did the same.
The fastest request is the one you never make.
curl -w '%{time_starttransfer}' -o /dev/null -s https://example.com