Static sites start fast and then slowly stop being fast, usually one convenience at a time. Here is what I have found worth defending.
Fonts are the biggest single lever
A web font is a render-blocking resource that lives on someone else’s server. Two fixes cover most of it:
- Self-host and preload. No extra DNS lookup, no third-party TLS handshake.
- Set
font-display: swapand give the fallback a matching metric, so the page does not jump when the real font lands.
If you only do one thing, do the fonts. Everything else is rounding error by comparison.
Ship less JavaScript
The fastest script is the one that is not there. For a blog, the honest answer is that you need approximately none of it. This site ships a handful of lines for the theme toggle and nothing else.
| Feature | Needs JS? | Alternative |
|---|---|---|
| Navigation | No | Plain links |
| Syntax colours | No | Highlight at build time |
| Dark mode | Barely | CSS media query + a toggle |
Things that matter less than people think
- Minifying HTML. Real, but tiny once gzip is involved.
- Inlining every stylesheet. Helps the first paint, hurts caching after that.
- Chasing a perfect Lighthouse score. Optimise the metric your visitors feel, which is usually time-to-first-content on a bad connection.