Last month I rebuilt this very website from the ground up. Not a redesign — a re-engineering. The old version looked fine, but under the hood it was fighting itself: a page builder running as a parent theme, CSS injected through a plugin, fonts loaded three different ways. Here are the four changes that actually moved the needle on speed — in rough order of impact.
1. Stop loading what the page doesn’t use
The single biggest win wasn’t a clever trick — it was deleting work. My homepage was loading a 76 KB stylesheet meant for deep service pages it never rendered. Every visitor downloaded it, parsed it, and threw it away.
The fix was a conditional enqueue: only load a stylesheet on the pages that actually use it.
function needs_page_styles() {
if ( ! is_singular() ) return false;
$post = get_queried_object();
return str_contains( $post->post_content, 'jms-detail' );
}
That one function cut the homepage’s render-blocking CSS by roughly half. Measure before you optimise — the slowest asset is often one you forgot you were shipping.
2. Turn on compression (it’s usually off)
This is the embarrassing one. My server was sending every stylesheet and script uncompressed — only the HTML was gzipped. Adding a few lines to the .htaccess file shrank the CSS payload by about 75%:
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/css
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/json image/svg+xml
</IfModule>
A 76 KB stylesheet became 16 KB on the wire — no code change, no visual change. Just turning on something that should have been on from day one.
3. Host your own fonts
Three separate things were loading Google Fonts on every page: the theme, a fonts plugin, and the page builder. That’s three render-blocking requests to a third party for fonts I could serve myself in one.
- Download the exact weights you use as
woff2files. - Declare them with
@font-faceandfont-display: swap. - Remove the plugins that were loading them externally.
One request, from my own domain, cached aggressively — and the layout stopped shifting while the fonts loaded.
4. Right-size your images
My hero image was a 2.7 MB PNG. On a phone, that one file was the difference between a fast first paint and a slow one. Re-exporting it at the right dimensions cut it to a fraction of the size with no visible loss in quality.
The real lesson
None of these were clever. They were all the same move: stop doing unnecessary work on every page load. Speed isn’t a feature you bolt on at the end — it’s the natural result of a build that isn’t fighting itself.
If your site feels slow and you’re not sure why, that’s usually the tell. Get in touch and I’ll take a look under the hood.

