A slow WordPress site is usually a few concrete things, not a mystery. These are the ones I look at first.
Caching
Without a cache, WordPress builds the page from PHP and the database on every visit. A page cache stores the finished HTML and serves that instead.
If the host already has server caching, such as Nginx FastCGI or LiteSpeed, use that. It is quicker than adding another plugin. If it does not, a caching plugin is the next step. WP Super Cache is enough for a lot of sites. LiteSpeed Cache belongs on a LiteSpeed server. W3 Total Cache and WP Rocket do more, and they need a careful setup so they do not fight the theme.
Object caching, with Redis or Memcached, stores query results in memory. A brochure site rarely needs it. A shop, or a site with a lot of logged-in use, often does.
Images
Oversized images are still the usual reason a page weighs too much. Export them at the size they are displayed, and use WebP or AVIF. Both are widely supported. WordPress can use AVIF, and it lazy-loads images by default, so a plugin is not required for that.
The database
Revisions, spam, trashed comments and expired transients accumulate. On sites I maintain I clear those on a schedule. WP-Optimize and WP-Sweep both do the job. Take a backup first.
Plugins and the theme
Each plugin is code that can run on every page. I check three things: whether it is still maintained, whether it loads scripts on pages that do not use it, and whether it adds queries the page does not need. Unused plugins come off, including the data they leave behind.
PHP and WordPress itself
Use PHP 8.4 or 8.5, with OPcache on. PHP 8.2 only receives security fixes, and those stop in December 2026. PHP 8.3 is already in security-only support.
Keep WordPress on the current release. Version 6.5, from April 2024, is several releases behind. Staying there means missing both fixes and the performance work that has shipped since.
Hosting
Caching will not rescue a site on an overloaded shared server. If the server is slow to answer, that is a hosting problem. I have written separately about when to move off shared hosting.
A CDN can serve images, CSS and JavaScript from nearer the visitor. Cloudflare's free plan is enough for most small sites.
What to measure
Google's Core Web Vitals are Largest Contentful Paint, Interaction to Next Paint, and Cumulative Layout Shift. Interaction to Next Paint replaced First Input Delay in March 2024. A report that still optimises for First Input Delay is out of date.
PageSpeed Insights is enough to see those three. Time to First Byte tells you whether the server itself is slow, which the vitals can hide.
If the site is already live and slow, send me the address and I will tell you what is worth doing first.