Website Performance: Why Sites Feel Slow and the Fixes That Matter
Sites rarely feel slow because of the server. The typical slow site spends 200ms on the server but wastes up to 6 seconds on unoptimized images, large JavaScript files, and excessive tracking scripts. Here’s how to improve your site's performance in order of impact:
Images: Always Start with Optimized Images
Photos exported from a phone can be as large as 3-12MB, which is far too heavy for the web. Resize them to their display dimensions, compress using modern formats like WebP or AVIF, and lazy-load images below the fold (use the loading="lazy" attribute). This single step often fixes more slow sites than any other.
JavaScript Weight: Audit and Minimize Unnecessary Scripts
Every builder, theme, or plugin adds scripts that can compound. Use browser developer tools to audit your site's network tab and remove what you can't justify. Tracking pixels are usually the culprits; marketing plugins might add five or more, but none of them get read.
Caching: Repeat Visitors Deserve Faster Load Times
Repeat visitors and subsequent page loads should hit a cache. Set long cache headers for static assets (our Nginx server uses 30 days) and use a CDN in front of your site (Cloudflare's free tier offers caching, global delivery, and TLS for $0).
Hosting Location/Quality: Consider It Last
While hosting location and quality matter, they are typically less critical than the above optimizations. A CDN can mitigate much of the distance impact on static assets, but if the server itself takes 2+ seconds to process (due to overloaded shared hosting or unoptimized databases), consider upgrading your hosting.
Measuring Performance Like an Adult
Use tools like PageSpeed Insights (Google's tool that provides Core Web Vitals) or browser developer tools. Measure mobile performance with throttling, as this is where users experience the most pain. Focus on LCP under 2.5 seconds as a headline target. Scores chasing 100/100 are a hobby; users notice 6s vs 2s more than 92% vs 98%.
Business Case: Why It Matters
Slow sites lose visitors measurably (classic findings show that every second of delay doubles the abandonment rate). Google also ranks page experience. For a local business site, going from 6 seconds to 2 seconds on mobile can be worth more than most marketing spends.
The Homelab Addendum: Self-Hosted Sites Behind a Tunnel + CDN
Self-hosted sites behind a tunnel and CDN (our exact setup) perform well. The tunnel adds negligible overhead for cached assets, and the origin only works when there's a cache miss.
For reference, this site's own stack: pages compiled ahead of time (no database work per visit), nginx serving assets with 30-day cache headers and gzip enabled, images sized to their display dimensions, and Cloudflare's free CDN in front — the origin only does work on cache misses. The result is a homepage that loads fast on a phone from anywhere, served from a rack in a house.