Les options autoloadées WordPress : le tueur silencieux de votre WooCommerce

wordpress woocommerce performance base-de-donnees wp-options

Le problème que personne ne voit

WordPress a une table centrale : wp_options. Elle stocke les réglages du site, les options des plugins, les données des widgets, les transients. Quand une option est marquée autoload = yes, WordPress la charge en mémoire à chaque requête - chaque page vue, chaque appel admin-ajax, chaque requête API. Si vous rencontrez aussi des lenteurs dans le back-office WooCommerce, la migration vers HPOS (High-Performance Order Storage) est complémentaire à ce nettoyage.

Sur un WordPress fraîchement installé, les options autoloadées pèsent quelques dizaines de Ko. Après deux ans de vie d’une boutique WooCommerce avec 30 plugins, c’est souvent 3 à 10 Mo.

Concrètement, à chaque chargement de page, WordPress exécute cette requête :

SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes';

Si le résultat pèse 5 Mo, chaque page commence par charger 5 Mo de données en mémoire. Avant même d’afficher quoi que ce soit.

Comment ça arrive

Trois causes principales :

1. Les plugins désinstallés qui laissent leurs données. Vous installez un plugin, vous le testez, vous le désactivez et le supprimez. Mais ses options restent dans wp_options avec autoload = yes. Multipliez ça par 20 plugins testés en deux ans, et vous avez des centaines de Ko de données orphelines chargées à chaque page.

2. Les transients qui s’accumulent. WordPress utilise les transients pour stocker des données temporaires. Quand un transient expire, il n’est pas automatiquement supprimé - il reste dans wp_options jusqu’à ce que quelqu’un le demande à nouveau. Sur un WooCommerce actif, les transients de cache produit, de sessions, de prix, s’empilent.

3. Les plugins qui abusent de l’autoload. Certains plugins stockent de grandes quantités de données avec autoload = yes alors qu’ils n’en ont besoin que sur certaines pages. Un plugin de statistiques qui stocke ses logs en autoload, un plugin de traduction qui charge toutes les chaînes en mémoire - c’est du gaspillage.

Depuis WordPress 6.6, le comportement par défaut a changé : le paramètre $autoload vaut désormais null, ce qui laisse WordPress décider intelligemment. Mais ça ne corrige pas les options déjà en place (source : felix-arntz.me).

Diagnostiquer

Mesurer le poids total

Connectez-vous à votre base de données (phpMyAdmin, Adminer, ou WP CLI) et exécutez :

SELECT SUM(LENGTH(option_value)) / 1024 / 1024 AS autoload_size_mb
FROM wp_options
WHERE autoload = 'yes';

Interprétation :

  • Moins de 800 Ko : normal, pas de souci
  • 800 Ko à 1 Mo : à surveiller
  • Plus de 1 Mo : il y a du nettoyage à faire
  • Plus de 3 Mo : c’est probablement un des premiers freins de votre site

Ces seuils sont confirmés par Kinsta (source : kinsta.com) et Pantheon (source : docs.pantheon.io).

Identifier les plus gros coupables

SELECT option_name, LENGTH(option_value) / 1024 AS size_kb
FROM wp_options
WHERE autoload = 'yes'
ORDER BY LENGTH(option_value) DESC
LIMIT 20;

Vous verrez probablement des noms comme _transient_*, _site_transient_*, des options de plugins que vous n’utilisez plus, ou des données sérialisées de thèmes (les options Elementor ou Divi peuvent peser à elles seules 500 Ko+).

Avec WP CLI

Si vous avez WP CLI (et vous devriez), c’est encore plus rapide :

wp option list --autoload=on --format=table \
  --fields=option_name,size_bytes \
  --orderby=size_bytes --order=DESC | head -20

Nettoyer

1. Supprimer les transients expirés

C’est le quick win numéro un. Aucun risque, impact immédiat :

wp transient delete --expired

Ou en SQL :

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

2. Désactiver l’autoload des options inutiles

Si un plugin n’est plus actif mais ses options sont toujours en autoload :

UPDATE wp_options
SET autoload = 'no'
WHERE option_name LIKE 'nom_du_plugin_%';

Attention : ne changez pas l’autoload des options WordPress core ou WooCommerce core sans savoir ce que vous faites.

3. Utiliser un outil dédié

AAA Option Optimizer identifie les options autoloadées qui peuvent être passées en no sans risque. Il analyse quelles options sont réellement utilisées sur chaque page et suggère les changements.

WP Optimize inclut un nettoyeur de base de données qui supprime les transients, les révisions, et les données orphelines.

4. Ajouter un index (gros catalogues)

Sur les sites avec beaucoup d’options, ajouter un index sur la colonne autoload accélère la requête de chargement :

ALTER TABLE wp_options ADD INDEX autoload_idx (autoload);

C’est une recommandation de WordPress VIP (source : docs.wpvip.com) pour les sites à fort trafic.

L’impact réel

Sur une boutique WooCommerce que j’ai optimisée, les options autoloadées pesaient 4,2 Mo. Après nettoyage (transients expirés, options de plugins désinstallés, données de thème orphelines), on est passé à 620 Ko.

Le résultat : TTFB réduit de ~150ms sur chaque page. Ça ne semble pas énorme, mais c’est 150ms gagnées sur chaque requête, cumulé avec les gains des autres optimisations.

Et surtout : ce problème revient. Sans maintenance régulière, les options autoloadées se réaccumulent. Un nettoyage trimestriel est une bonne pratique.

Pourquoi le cache ne résout pas ce problème

Un plugin de cache stocke le HTML final et le sert sans exécuter PHP. Mais les pages dynamiques de WooCommerce (panier, checkout, compte client) ne sont pas cachées. Et chaque requête admin-ajax (cart fragments, recherche produit, calcul de livraison) charge les options autoloadées en mémoire.

Un cache rapide + des options autoloadées à 5 Mo = un site rapide pour les pages statiques, mais lent pour tout ce qui est interactif. C’est pour ça que nettoyer la base de données est complémentaire au cache, pas un substitut. Pour comprendre pourquoi les plugins de cache ne suffisent pas sur WooCommerce, j’explique en détail l’ordre logique des optimisations à mettre en place.

Avant de commencer ce nettoyage, je vous recommande de réaliser un audit de performance WooCommerce pour mesurer l’état réel de votre base de données et prioriser les actions.


Vous ne savez pas combien pèsent vos options autoloadées ? Demandez un audit gratuit - c’est une des premières choses que je vérifie.

Besoin d'un audit de votre boutique WooCommerce ?

Je vous envoie un diagnostic personnalisé avec les points à améliorer en priorité. Gratuit, sans engagement.

Articles connexes