Four changes that made my WordPress site genuinely fast

Web performance — line chart

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 woff2 files.
  • Declare them with @font-face and font-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.


Want a site that isn’t fighting you?

A quick, no-pressure look at what’s slowing your site down.

Back to all articles