Performance

The web performance tuning checklist 2026

3 min read

Five years ago we published a web performance tuning checklist over on the ScipioERP blog. Last week I ran it against our own website. A third of it is now obsolete.

Some context: this summer we finally moved ilscipio.com off WordPress. Years of Divi page builder, WPML and plugin updates, replaced by a static Hugo build - 349 German pages and 233 English ones, rendered to plain files and served by Caddy. The only PHP left is the contact form.

That migration gave us a clean testbed, so I re-scored the 2021 list item by item. Reading it again was humbling. EV certificates (browsers dropped that green bar in 2019). Hand-tuned SSL session caches. Varnish cache prewarming. Three separate items about jQuery. All gone. The advice was not wrong. The platform ate it. Caddy ships HTTP/2, sane TLS and compression by default, browsers made the lazy-loading polyfill pointless, and nobody puts jQuery on a new site.

What survived

The core of the 2021 list still stands, it just got sharper.

Keep pages small. Our homepage HTML is 84 KB, all JavaScript together 11 KB across three files, the CSS bundle 135 KB minified. No framework. This is still the whole game - everything below is fine tuning.

Optimize above the fold. Inline the critical CSS (ours is under 4 KB), load the rest async, and preload exactly the fonts the first paint needs. We declare four font weights and preload the two the first paint needs.

Images: WebP everywhere, width and height on every img tag so nothing shifts while loading, lazy-load below the fold and never above it.

What is new since 2021

fetchpriority=“high” on your LCP image - and on its preload. We had the attribute on the image but not on the preload for the same image, so the browser fetched our most important resource at default priority. Good job, Paul. One attribute, and the whole point of the preload was gone.

Speculation Rules. The successor to link prefetching: a small JSON block in the head, and the browser prefetches same-origin pages when a click looks likely. Navigation feels instant without a single line of application code.

content-visibility: auto for long pages. Our homepage renders 52 images, and the sections below the fold do not need layout work at load time. We turned it on for our homepage while I wrote this post.

On the server: HTTP/3, Brotli, 103 Early Hints, and immutable cache headers for fingerprinted assets. In Caddy most of this is a config line, not a project.

Where we still fail our own list

But let me be honest about something here: we serve one image size to every screen. No srcset, no sizes. A phone loading our project pages downloads roughly four times the pixels it shows. And the hero image is WebP, not AVIF, because Hugo cannot encode AVIF and I have not wired an external encoder into the build yet. A checklist is a direction, not a trophy.

The actual point

In 2021 the list was about making a slow stack fast: caches in front of PHP, tuned buffers, prewarmed Varnish. In 2026 most of that lives in the platform, and the biggest performance decision is which stack you pick before you write a single line. The best performance work we did this year was deleting the page builder.

The 2021 original is still up on the ScipioERP blog if you want to compare. Anyway, I’ll keep updating this as the tooling moves…