« Vérifiez que le JSON-LD est bien émis. » C’est la première consigne qu’on donne lors d’un audit de rich snippets quand un site qui affichait des étoiles d’avis dans les résultats de recherche cesse soudainement d’en bénéficier. Sur ce cas précis, le balisage était bien émis côté serveur, mais il n’atteignait plus jamais le navigateur.
Ce billet détaille comment repérer et corriger ce conflit entre une extension SEO qui injecte du JSON-LD et un plugin de cache qui minifie le HTML de façon trop agressive.
Le symptôme : un script qui existe côté source, absent côté rendu
La confusion vient d’un réflexe naturel mais insuffisant : vérifier le code source de la page via « Afficher la source ». Sur un site avec cache de page activé, cette vue peut afficher une version non minifiée mise en cache avant l’activation du problème, ou au contraire une version déjà corrompue selon le moment du test. Le bon réflexe est de vider le cache complet, puis de recharger la page en navigation privée avant toute vérification.
Une fois le cache vidé, l’inspection du DOM via les outils de développement révèle l’absence pure et simple de la balise <script type="application/ld+json"> normalement injectée dans le pied de page par l’extension SEO.
Diagnostic : la minification HTML en cause

Autoptimize, comme la plupart des plugins de cache, propose une option de minification HTML qui retire les espaces superflus et parfois des commentaires du code source pour réduire le poids de la page. Sur certaines configurations, cette minification interprète mal le contenu d’un bloc <script> dont le type n’est pas du JavaScript exécutable classique, et le tronque ou le supprime lors du traitement.
Le test de confirmation est simple : désactiver temporairement l’option « Optimize HTML Code » dans Autoptimize → réglages HTML, vider le cache, et vérifier si le script réapparaît dans le DOM. Si c’est le cas, le diagnostic est confirmé sans ambiguïté.
Correctif : exclure le script de l’optimisation
Il n’est pas nécessaire de désactiver toute la minification HTML pour régler ce cas précis. Autoptimize propose un champ dédié aux exclusions, dans lequel on peut cibler uniquement le contenu problématique :
application/ld+json
Ce fragment, placé dans le champ « Exclude HTML » de la configuration, indique à Autoptimize de ne pas toucher aux blocs correspondants lors de la minification, tout en conservant l’optimisation sur le reste du document.
Pour une configuration plus fine encore, notamment sur un site géré via un fichier de configuration versionné, le filtre applicable côté PHP permet de contrôler précisément le comportement :
add_filter( 'autoptimize_html_exclude', function( $exclude, $content ) {
return $exclude . 'application/ld+json,';
}, 10, 2 );
Vérification post-correction
- Vider intégralement le cache de page après modification des réglages.
- Recharger la page en navigation privée pour écarter tout cache navigateur.
- Repasser l’URL corrigée dans l’outil de test des données structurées de Google pour confirmer la détection du balisage.
Sur nos projets, on ajoute systématiquement une exclusion pour
application/ld+jsondès l’activation d’Autoptimize sur un site qui affiche du balisage structuré, avant même qu’un problème ne se manifeste.
Prévention pour la suite
Ce type de conflit touche potentiellement tout plugin de cache proposant une minification HTML avancée, pas seulement Autoptimize. La bonne pratique consiste à vérifier systématiquement, après chaque activation d’une nouvelle option de minification, que les balises schema.org critiques pour les rich snippets (avis, FAQ, recette, produit) restent bien présentes dans le DOM final envoyé au navigateur, et pas seulement dans la réponse brute du serveur.
En résumé
Un rich snippet qui disparaît sans erreur explicite pointe presque toujours vers une couche d’optimisation ajoutée après coup : cache, minification, ou concaténation de scripts. Le réflexe à adopter est de comparer systématiquement le code source brut et le DOM final avant de chercher la cause du côté de l’extension SEO elle-même.