Most WordPress speed advice starts with a plugin recommendation. That’s backwards — you can’t fix what you haven’t measured, and half the slow sites we inherit are wearing three optimization plugins that fight each other. This is the measure-first version. You’ll need admin access, ideally WP-CLI, and a site you’re allowed to change.
Measure the before
Run your homepage and one important interior page through PageSpeed Insights. Write down three numbers: TTFB (time to first byte), LCP (largest contentful paint), and total page weight. These are your “before” — without them you’ll never know if anything you do today actually helped.
Separate server time from asset weight
Slow sites have two different diseases, and the cure for one does nothing for the other. Check the server side by itself:
curl -o /dev/null -s -w "TTFB: %{time_starttransfer}s\n" https://example.com/
If TTFB is over about 0.6 seconds, your server is spending too long building the page — that’s a caching and hosting problem, keep reading. If TTFB is quick but the page still crawls, your problem is the stuff the page carries: images and scripts. Skip ahead to the image step.
Add page caching
Page caching saves the finished HTML so PHP doesn’t rebuild it for every visitor — it’s the single biggest lever on most sites, often cutting TTFB by more than half. Check your host’s panel first; many managed hosts have server-level caching you just switch on, and that beats any plugin. No host cache? LiteSpeed Cache if your host runs LiteSpeed, WP Rocket if you’d rather pay for easy. Verify it’s working by requesting the same page twice:
curl -sI https://example.com/ | grep -i -E "x-cache|x-litespeed|age"
A HIT (or a second request that’s dramatically faster) means the cache
is doing its job.
Shrink and lazy-load the images
Images are usually half the page weight or more. WordPress has lazy-loaded images by default since 5.5, so your jobs are size and format: serve WebP or AVIF instead of giant JPEGs (an image plugin, or your CDN, can convert on the fly), and make sure nobody uploaded a 4000-pixel photo into a 400-pixel slot. One exception — the big image at the top of the page (your LCP image) should not lazy-load. It’s the first thing visitors wait for; let it load eagerly.
Find the plugins costing you
Install Query Monitor, load a slow page while logged in, and look at the queries-by-component panel. It names names — the plugin burning 800ms on every page load shows right up. Deactivate suspects one at a time and re-measure. When you find plugins you don’t actually need, retire them properly: prune your plugins. A bloated database drags everything too — if the site’s been around a while, clean that up while you’re in there.
Measure again and set a budget
Run the same PageSpeed tests on the same pages and compare against your “before” numbers. That comparison is your verification — TTFB and LCP should both be visibly down, and you should know exactly which change did what. Then set a simple budget: TTFB under half a second, LCP under 2.5, and no new plugin without checking what it costs. Speed isn’t a project you finish; it’s a room you keep tidy — the same way sites drift slow when nobody’s maintaining them, they stay fast when someone measures once a season.