The Admin Dashboard Is Slow but the Front End Is Fast
A fast front end and a slow admin is not a contradiction — it is the expected outcome of page caching. Visitors are served static HTML; you are running every query, every plugin and every admin hook on each click.
The short version
- The admin is never cached. It shows the site’s real database performance.
- A bloated autoloaded options table is the commonest cause.
- The Heartbeat API polls continuously and adds up.
- Query Monitor finds the rest in about ten minutes.
1. The autoloaded options table
Every single request — front end and admin — reads every row in wp_options marked autoload. Plugins that store large data there without disabling autoload make every page slower, invisibly.
wp db query "SELECT ROUND(SUM(LENGTH(option_value))/1024/1024, 2) AS mb
FROM wp_options WHERE autoload='yes';"
Under 1MB is healthy. Above 3MB is a real problem. Find the offenders:
wp db query "SELECT option_name, ROUND(LENGTH(option_value)/1024) AS kb
FROM wp_options WHERE autoload='yes'
ORDER BY LENGTH(option_value) DESC LIMIT 20;"
Watch out
Take a backup before deleting anything from wp_options. Some large autoloaded rows are legitimately needed. Orphaned transients and rows belonging to removed plugins are the safe deletions.
# clear expired transients
wp transient delete --expired
# see what a removed plugin left behind
wp db query "SELECT option_name FROM wp_options
WHERE option_name LIKE '%oldplugin%';"
2. The Heartbeat API
WordPress polls the server every fifteen seconds while the admin is open, to handle autosave and lock notices. On a slow server, with several tabs open, this is a meaningful load.
// limit it rather than disabling it — autosave is useful
add_filter( 'heartbeat_settings', function ( $settings ) {
$settings['interval'] = 60;
return $settings;
} );
Do not disable it entirely on a site where people edit long posts. Losing autosave to save a few requests is a bad trade.
3. Find the slow queries
Install Query Monitor and open a slow admin screen. Look at three numbers:
| Metric | Healthy | Investigate above |
|---|---|---|
| Database queries | Under 100 | 200 |
| Query time | Under 0.1s | 0.5s |
| Peak memory | Under 100MB | 150MB |
| Slowest single query | Under 0.05s | 0.2s |
Query Monitor attributes each query to the plugin that made it, which usually ends the investigation immediately.
4. The post revisions pile
A long-lived site with many editors accumulates revisions, and the post list screen queries across them:
wp db query "SELECT COUNT(*) FROM wp_posts WHERE post_type='revision';"
# limit future revisions
// wp-config.php
define( 'WP_POST_REVISIONS', 10 );
Clean old ones with a tool that understands the relationships, and back up first.
5. Dashboard widgets
The default dashboard fetches news feeds from external servers. If one is slow to respond, your dashboard waits for it. Remove the ones you do not read:
add_action( 'wp_dashboard_setup', function () {
remove_meta_box( 'dashboard_primary', 'dashboard', 'side' );
remove_meta_box( 'dashboard_quick_press', 'dashboard', 'side' );
} );
6. Object caching
A page cache does nothing for the admin. An object cache does, because it caches the database query results that the admin repeats constantly. On a database-heavy site this is the single largest admin improvement available.
Checking in order
- Measure the autoloaded options size. Fix if above 1MB.
- Install Query Monitor and read a slow screen.
- Count post revisions.
- Limit Heartbeat to 60 seconds.
- Enable object caching if your host supports it.
- Only then consider a faster server.
Common questions
Why is only one admin screen slow?
Something specific to that screen — usually a plugin adding a column to the post list that runs a query per row.
Does a caching plugin help the admin?
Page caching, no. Object caching, substantially.
Is a slow admin hurting my rankings?
Not directly. It is slowing you down, which has its own cost.
Sumit
Writes everything on TechMozz.