Every week someone asks us to move their site to a "faster server". Sometimes that is the answer. More often the site is slow because of what it is doing on the server it already has, and moving it just relocates the problem.

First, find out what is slow

Open the site with caching disabled and look at the server response time, not the page load time. If the HTML itself takes four seconds, the problem is PHP, the database or the host. If the HTML arrives in three hundred milliseconds and the page still takes six seconds, the problem is on the client side and a new server will not help.

For the first case, the query log tells you everything. Nine times out of ten the slowest queries come from one plugin doing something expensive on every page load.

The three usual suspects

Page builders that regenerate their CSS on every request are the first. A builder that writes a stylesheet once is fine; one that assembles it in PHP each time is not, and it gets worse with every block you add.

The second is an object cache that is installed but not actually working — Redis configured, connection failing, and WordPress quietly falling back to the database on every request. The admin panel says "connected", the query log says otherwise.

The third is autoloaded options. Plugins leave rows in the options table marked autoload, and WordPress pulls all of them into memory on every page. A few hundred kilobytes of dead plugin settings is common on a site that has been running for five years.

What actually fixed it for us

We replace page-builder bloat with a block theme and hand-written CSS. We turn on a real page cache and confirm it is serving from cache by checking the response headers, not by trusting a plugin badge. We run one query to see the autoload total, and we clean out what plugins left behind.

After that, the remaining gains are front-end: images in WebP, correct sizes, and removing the three plugins that inject their own CSS and JavaScript on every page to do something the theme already does.

When to move host

Move when the response time is stable and slow with a nearly empty install, or when you are hitting CPU limits because of real traffic. That is a hosting problem. If your site is slow on an empty install with a default theme, it is worth testing, because no amount of caching will fix a host that cannot serve a static file quickly.