Pourquoi WordPress est lent

WordPress n’est pas lent par nature. Ce sont les mauvaises pratiques qui le ralentissent : plugins excessifs, thèmes surchargés, hébergement inadapté et absence de cache.

Lueur Externe audite et optimise les performances WordPress de ses clients avec des résultats mesurables.

Hébergement

Le choix de l’hébergement est le facteur numéro un :

TypeTTFB moyenRecommandation
Mutualisé800-2000 msÀ éviter
VPS200-500 msBon compromis
Dédié/Cloud50-200 msOptimal
Managé WP100-300 msPratique

Stack serveur optimale

# Nginx + PHP-FPM + Redis + MariaDB
# nginx.conf
server {
    listen 443 ssl http2;
    server_name example.com;
    root /var/www/wordpress;

    # Compression Brotli
    brotli on;
    brotli_types text/plain text/css application/json application/javascript;

    # Cache statique
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff2|webp)$ {
        expires 1y;
        add_header Cache-Control "public, immutable";
    }

    # FastCGI cache
    fastcgi_cache_path /tmp/nginx-cache levels=1:2 keys_zone=WORDPRESS:100m inactive=60m;

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        fastcgi_cache WORDPRESS;
        fastcgi_cache_valid 200 60m;
        fastcgi_cache_bypass $skip_cache;
        fastcgi_no_cache $skip_cache;
    }
}

Cache applicatif

Object Cache (Redis)

// wp-config.php
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_DATABASE', 0);

Installez le plugin Redis Object Cache pour activer le cache objet.

Page Cache

Le cache de pages complètes est l’optimisation la plus impactante :

// Cache simple sans plugin
// wp-content/advanced-cache.php
define('WP_CACHE', true);

$cache_file = WP_CONTENT_DIR . '/cache/pages/' . md5($_SERVER['REQUEST_URI']) . '.html';

if (file_exists($cache_file) && (time() - filemtime($cache_file)) < 3600) {
    readfile($cache_file);
    exit;
}

ob_start(function ($buffer) use ($cache_file) {
    if (!is_user_logged_in() && !is_admin()) {
        file_put_contents($cache_file, $buffer);
    }
    return $buffer;
});

Base de données

Nettoyage

-- Supprimer les révisions anciennes
DELETE FROM wp_posts WHERE post_type = 'revision'
AND post_date < DATE_SUB(NOW(), INTERVAL 30 DAY);

-- Supprimer les transients expirés
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_%';

-- Optimiser les tables
OPTIMIZE TABLE wp_posts, wp_postmeta, wp_options, wp_comments;

Limiter les révisions

// wp-config.php
define('WP_POST_REVISIONS', 5);
define('AUTOSAVE_INTERVAL', 120);
define('EMPTY_TRASH_DAYS', 7);

Front-end

CSS critique

Injectez le CSS critique en inline et chargez le reste en async :

add_action('wp_head', function () {
    $critical = file_get_contents(get_template_directory() . '/assets/css/critical.css');
    echo '<style>' . $critical . '</style>';
}, 1);

add_filter('style_loader_tag', function ($html, $handle) {
    if ($handle === 'mon-theme-style') {
        return str_replace("rel='stylesheet'", "rel='preload' as='style' onload=\"this.onload=null;this.rel='stylesheet'\"", $html);
    }
    return $html;
}, 10, 2);

Images

  • Convertir en WebP (plugin Imagify ou ShortPixel)
  • Lazy loading natif (loading="lazy")
  • Dimensions explicites (width et height)
  • Responsive images avec srcset

Conclusion

L’optimisation WordPress est un travail méthodique qui touche chaque couche de la stack. Lueur Externe propose des audits de performance complets et des optimisations sur mesure pour des sites WordPress rapides et bien référencés.