75 guides published Start a blog Fix my site How we test
FIX IT

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:

MetricHealthyInvestigate above
Database queriesUnder 100200
Query timeUnder 0.1s0.5s
Peak memoryUnder 100MB150MB
Slowest single queryUnder 0.05s0.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

  1. Measure the autoloaded options size. Fix if above 1MB.
  2. Install Query Monitor and read a slow screen.
  3. Count post revisions.
  4. Limit Heartbeat to 60 seconds.
  5. Enable object caching if your host supports it.
  6. 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.

S

Sumit

Writes everything on TechMozz.

More in Fix It