WordPress Performance Checklist: End-of-Year Review

As the year wraps up, it’s a good time to audit your WordPress site’s performance. Faster sites rank better, convert better, and cost less to host. Most of the items on this checklist take under an hour to implement and can have a noticeable impact on page load time.

Problem: What are the most impactful performance improvements you can make to a WordPress site, and how do you prioritise them?

Solution: Work through the checklist below — caching, image optimisation, database cleanup, script management, and hosting configuration. Each item is independent so you can tackle them in any order; the biggest gains typically come from page caching and image compression.

1. Caching — install a caching plugin if you haven't already:

wp plugin install w3-total-cache --activate
# or
wp plugin install wp-super-cache --activate

2. Image optimisation — compress and serve images in the right size:

// Remove WP's default large image sizes if you don't use them
add_filter( 'intermediate_image_sizes_advanced', function( $sizes ) {
    unset( $sizes['medium_large'] );
    return $sizes;
} );

// Set JPEG compression quality
add_filter( 'jpeg_quality', function() { return 82; } );

3. Database cleanup — remove post revisions, transients, and spam:

-- Remove all post revisions older than 30 days
DELETE FROM wp_posts
WHERE  post_type = 'revision'
AND    post_date  < NOW() - INTERVAL 30 DAY;

-- Remove expired transients
DELETE FROM wp_options
WHERE  option_name LIKE '_transient_timeout_%'
AND    option_value < UNIX_TIMESTAMP();

DELETE FROM wp_options
WHERE option_name LIKE '_transient_%'
AND   option_name NOT LIKE '_transient_timeout_%'
AND   option_name NOT IN (
    SELECT CONCAT('_transient_', REPLACE(option_name, '_transient_timeout_',''))
    FROM wp_options WHERE option_name LIKE '_transient_timeout_%'
);

4. Script and style optimisation — disable scripts/styles loaded by plugins on pages that don't need them:

add_action( 'wp_enqueue_scripts', 'dequeue_unused_assets', 99 );

function dequeue_unused_assets() {
    if ( ! is_page( 'contact' ) ) {
        // Dequeue contact form scripts on non-contact pages
        wp_dequeue_script( 'contact-form-7' );
        wp_dequeue_style(  'contact-form-7' );
    }
}

5. Quick wins to verify:

Enable GZIP compression, configure browser caching headers, use a CDN for static assets, enable keep-alive connections on Nginx/Apache, and upgrade to PHP 7.2+ if you're still on PHP 5.6.

NOTE: Measure before and after each change with tools like GTmetrix or web.dev/measure. Optimisations that improve score in one area can sometimes introduce regressions elsewhere — test on a staging site first.