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 :
| Type | TTFB moyen | Recommandation |
|---|---|---|
| Mutualisé | 800-2000 ms | À éviter |
| VPS | 200-500 ms | Bon compromis |
| Dédié/Cloud | 50-200 ms | Optimal |
| Managé WP | 100-300 ms | Pratique |
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 (
widthetheight) - 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.