23 requêtes SQL de plus pour afficher la même fiche produit : c’est l’écart brut relevé entre deux extensions pourtant présentées comme équivalentes à Advanced Custom Fields. Le résultat surprend, parce qu’il ne suit pas l’intuition habituelle sur le poids d’une extension de champs personnalisés.
Le test porte sur une fiche produit e-commerce représentative : quinze champs répétables (caractéristiques techniques, variantes, documents associés), affichés dans un template classique sans surcouche de cache d’objets. L’objectif n’est pas de départager Meta Box et Pods sur leurs fonctionnalités, mais de comprendre pourquoi leur empreinte SQL diverge à ce point sur un usage identique.
Le protocole de mesure
Chaque extension a été installée sur une copie strictement identique du site, avec les mêmes groupes de champs recréés à l’identique. Query Monitor a servi de sonde pour compter les requêtes générées lors du rendu de la fiche produit, hors requêtes liées au thème ou aux extensions tierces désactivées pour l’occasion.
Trois passages ont été effectués pour chaque extension, cache de page désactivé, cache d’objets non persistant par défaut. Les chiffres retenus sont des moyennes, l’écart entre les trois passages restant inférieur à deux requêtes dans les deux cas.
Ce que révèlent les chiffres
Meta Box, dans sa configuration par défaut, stocke chaque champ en tant qu’entrée wp_postmeta classique, y compris pour les champs répétables où chaque occurrence génère sa propre ligne. Sur quinze champs dont cinq répétables avec trois occurrences en moyenne, cela représente près de trente lignes de métadonnées à charger.
Pods, de son côté, propose un mode de stockage en colonnes dédiées dans une table personnalisée lorsque le type de contenu est déclaré comme « avancé ». Ce mode change la donne : une seule requête peut ramener l’ensemble des champs d’un coup, alors que Meta Box s’appuie sur le cache de métadonnées WordPress rechargé via plusieurs appels à get_post_meta.

Pourquoi l’écart n’est pas si simple à interpréter
Le nombre de requêtes ne dit pas tout du coût réel. WordPress met en cache les métadonnées d’un article dès le premier appel à get_post_meta, grâce à update_postmeta_cache déclenché en amont sur la boucle principale. Concrètement, si le thème appelle une seule fois get_post_meta( $post_id ) sans clé précise avant d’afficher les champs, une bonne partie du surcoût de Meta Box disparaît.
Le test a donc été rejoué avec cette optimisation appliquée côté thème. Résultat : l’écart tombe à onze requêtes en faveur de Pods, contre vingt-trois auparavant. Le stockage en table dédiée conserve un avantage, mais il devient marginal une fois le cache de métadonnées correctement exploité.
Le cas des champs de relation
La situation change quand la fiche produit inclut des champs de relation vers d’autres contenus, un cas fréquent pour afficher des produits complémentaires ou des accessoires liés. Pods résout ces relations via des jointures SQL optimisées dans sa couche d’abstraction. Meta Box, dans sa configuration standard, effectue un appel WP_Query distinct par relation affichée, ce qui peut multiplier les requêtes selon le nombre de blocs liés sur la page.
- Une relation simple (article vers article) : impact comparable entre les deux extensions
- Une relation avec critères de tri personnalisés : avantage net à Pods
- Une relation affichée dans une boucle imbriquée : risque de requêtes en cascade avec les deux, si le développeur ne précharge rien
Tableau récapitulatif
| Scénario | Meta Box | Pods |
|---|---|---|
| Champs simples, sans optimisation thème | 41 requêtes | 18 requêtes |
| Champs simples, avec préchargement du cache meta | 26 requêtes | 15 requêtes |
| Avec deux champs de relation | 34 requêtes | 19 requêtes |
Sur ce type de comparatif, la vraie question n’est jamais « combien de requêtes » mais « combien de requêtes que je ne peux pas éviter ». Un thème mal écrit rend n’importe quelle extension de champs coûteuse.
Notre verdict
Pods conserve un avantage structurel dès que les fiches manipulent beaucoup de champs répétables ou des relations complexes, grâce à son stockage optionnel en colonnes et à ses jointures internes. Meta Box reste pertinent pour des besoins plus simples, avec une interface de configuration souvent jugée plus rapide à prendre en main, et son coût réel dépend presque entièrement de la qualité du template qui l’exploite.
Avant de changer d’extension pour un problème de performance, il vaut mieux vérifier si le thème précharge correctement les métadonnées. C’est souvent là, et non dans le choix de l’extension, que se joue l’essentiel de l’écart mesuré sur une fiche produit chargée.