Teams spend weeks on performance work that never shows up in real-user data. They swap a plugin, tweak a config, watch the lab score wobble, and the 75th percentile in the field doesn’t move. On WordPress specifically, most genuine improvement comes from four levers. Pull those hard before touching anything else.

Lever 1: Caching

An uncached WordPress response runs the whole bootstrap, theme and plugin stack for every visitor. Full-page caching turns that into a static file for anonymous traffic; object caching (Redis or Memcached) keeps logged-in and dynamic pages from re-running the same expensive queries.

This is almost always the single biggest win, and it’s the first thing to verify, not assume. Check the response headers on a real URL; a surprising number of “cached” sites aren’t.

Lever 2: Image delivery

Images are usually the Largest Contentful Paint element, and WordPress makes it easy to ship the wrong one:

  • Serve modern formats (AVIF / WebP) with a fallback.
  • Emit correct srcset and sizes so phones download phone-sized images.
  • Set explicit width and height on every image to reserve space and avoid layout shift.
  • Lazy-load everything below the fold, but never the LCP image.

Lever 3: Render-blocking CSS and JavaScript

Every plugin that enqueues a stylesheet in the head delays the first paint. The fixes, roughly in order of impact:

  1. Inline the critical CSS the first screen needs; load the rest asynchronously.
  2. Defer scripts that aren’t needed for the initial render.
  3. Audit what each plugin loads on pages where its feature isn’t even used, and dequeue it there.

Lever 4: Database queries

A slow template is often one bad WP_Query: posts_per_page => -1, a meta query with no index, or an N+1 loop hitting the database once per row. Turn on the query monitor on the heaviest templates and fix the outliers. Add 'no_found_rows' => true where you don’t paginate; it skips a second count query on every request.

What’s usually wasted effort

Micro-minifying already-gzipped assets, chasing the last two points of a lab score, or installing a second optimisation plugin to fix the first one. If the four levers above are genuinely handled and field data still fails, then it’s worth profiling deeper, but that’s rare.