You upgraded your hosting plan. You're on an SSD server. Your internet connection is fast. Yet your WordPress site still loads in 4 seconds. Here's how to diagnose what's actually going on.
Step 1: Measure Time to First Byte
Time to First Byte (TTFB) is the delay between sending a request and receiving the first byte of the response. It measures server processing time — nothing to do with your network speed or the size of the response.
Check it in Chrome DevTools: open Network tab, reload the page, click your HTML request, look at Waiting (TTFB).
- Under 200ms: server is fine, look at frontend
- 200ms–1s: server has mild performance issues
- Over 1s: server is the primary problem
If your TTFB is slow, frontend fixes (image compression, minification) won't help much.
Cause 1: No Page Caching
Without caching, every page request runs all your WordPress PHP code, queries your database, builds the HTML, and sends it. This takes 300ms–2000ms depending on your theme and plugins.
With a page cache, the first request builds the HTML and saves it to disk. Every subsequent request serves the saved file directly from nginx, bypassing PHP entirely. TTFB drops to 5–20ms.
Install a caching plugin: WP Super Cache, W3 Total Cache, or WP Rocket. Enable page caching, clear the cache, and re-test TTFB.
Cause 2: Too Many Plugins
Each active plugin adds PHP code that runs on every request, even if the plugin's functionality isn't needed for that specific page. A site with 30 active plugins can easily add 500ms–1500ms to uncached page generation time.
Audit your plugins. Disable any that aren't actively used. Some plugins (sliders, social share buttons, page builders) add particularly heavy frontend assets. Disable them and check if TTFB improves.
Cause 3: Unoptimised Database Queries
WordPress stores almost everything in a MySQL database. Plugins that make frequent or unindexed database queries on every request can cause significant slowdown.
Install the Query Monitor plugin (in development only — remove before production). It shows you every database query on each page load, how long each took, and which plugin generated it.
Anything over 10 queries per page or any single query over 50ms deserves investigation.
Cause 4: Autoloaded Options
WordPress stores configuration in a table called wp_options. Any row with autoload=yes is loaded on every page request. Over time, plugins add to this table and forget to clean up. Hundreds of autoloaded options bloat every page load.
Check with this SQL query:
SELECT SUM(LENGTH(option_value)) as autoload_size
FROM wp_options WHERE autoload='yes';
If the result is over 1MB, you likely have excessive autoloaded data. Plugins like WP-Optimize can clean this up.
Cause 5: Your Host
If TTFB is slow even after caching is enabled and you're serving a cached page, the bottleneck is your host. A cached WordPress page served directly by nginx should respond in under 50ms. If it's taking 500ms, PHP workers are queued, the disk is under I/O contention, or the server is overloaded.
This is the overselling problem. No WordPress optimisation fixes it.