24/08/2025
I've been staring at these Lighthouse scores all week and I can't get over how dramatic the difference is.
We went from 2.7 seconds to first contentful paint down to 0.2 seconds. That's not a gradual improvement, that's the kind of change where you refresh the page and think something's broken because it loaded too fast.
The breakthrough came when we finally took the 14kb rule seriously. You know that magic number, the amount of data that fits in the initial TCP slow start window. Everything your users need to see should fit in those first 14 kilobytes, compressed. Sounds impossible until you actually try it.
We stripped out the bloated NGINX reverse proxy setup we'd been running forever. Turns out when you're serving mostly static content or simple dynamic pages, you don't need all that complexity. We switched to Caddy with HTTP/2 and HTTP/3 support built in, plus automatic compression. Python's built-in HTTP server would work just as well for a lot of use cases.
The beautiful part is how simple the stack became. No more wrestling with NGINX configs, no more proxy headers to debug, no more wondering why compression isn't working properly. Caddy just handles it all automatically. TLS certificates, compression, modern protocols. And for security, Cloudflare sits in front doing what it does best.
What really gets me is how we'd overcomplicated everything. We had this elaborate setup because that's what everyone does, right? Multiple layers, reverse proxies, complex configurations. But when you actually measure what matters, how fast your users can see your content, all that complexity was just getting in the way.
Three seconds doesn't sound like much until you actually count it out. One Mississippi, two Mississippi, three Mississippi. That's an eternity in internet time. That's long enough for someone to decide your site is broken and go somewhere else.
The fix wasn't about throwing more servers at the problem or upgrading to faster hardware. It was about understanding the fundamentals. Get your critical content under 14kb, use modern protocols, compress everything, and let Cloudflare handle the global distribution and security.
Your users don't care about your technical constraints or how sophisticated your infrastructure looks on a diagram. They don't care that you have Kubernetes clusters with thousands of lines of infrastructure code managing Docker containers across multiple cloud servers. They don't care about your horizontal scaling strategies or whether you can vertically scale your database instances. They just want your site to load fast and work well. Sometimes the best architecture is the simplest one that actually delivers on that promise, not the one that looks most impressive in your infrastructure repository.