Rédaction : 4SYSTEMPublié le Mis à jour le

9 min de lecture

Un cache WordPress efficace réutilise les contenus publics sans réutiliser les données propres à un visiteur. Un ancien prix, un panier qui semble vide ou un formulaire refusé ne se corrigent donc pas forcément en vidant tout. Vous devez identifier la réponse concernée, la couche qui la conserve et les conditions dans lesquelles elle varie.

Le bon réglage n’est pas « tout mettre en cache ». Il consiste à conserver ce qui peut être partagé, à isoler les sessions et à prévoir une purge après modification. La validation porte sur le contenu reçu et les actions possibles, pas seulement sur la vitesse d’affichage.

Identifier ce que conserve chaque couche

Quatre couches peuvent intervenir sur une même visite. Les distinguer évite de demander à une extension de corriger un problème qu’elle ne contrôle pas.

  • Navigateur : il conserve localement des réponses, notamment des fichiers et parfois du HTML. Ce cache appartient au client, contrairement à un cache partagé entre visiteurs.[11]
  • Page : une extension ou le serveur conserve une réponse HTML déjà produite. Si elle contient un prénom ou un panier, sa réutilisation doit être maîtrisée.
  • Objet : l’application réutilise des données intermédiaires, plutôt que la page entière. Cherchez quels objets sont stockés, avec quelles clés et quelle invalidation. Ne supposez pas qu’un défaut visuel provient de cette couche.
  • CDN : un service devant l’hébergement peut conserver des réponses indépendamment du cache de page. Une purge dans WordPress ne prouve pas que cette copie a disparu.

Relevez l’extension active, les options de l’hébergeur, le CDN éventuel et le cache objet persistant. Pour chaque couche, identifiez qui définit les exclusions et qui déclenche la purge. Ne superposez pas deux caches de page sans connaître leur articulation.

Cache WordPress : lire les directives sans contresens

Trois directives HTTP répondent à des besoins différents :

  • no-cache autorise le stockage, mais exige une revalidation avant réutilisation par le cache HTTP. Il ne signifie pas « aucune copie ».[11]
  • no-store demande de ne pas stocker la réponse. Il ne supprime toutefois pas les anciennes réponses déjà conservées pour cette URL : une correction doit aussi traiter ces copies.[11]
  • private réserve le stockage aux caches privés, notamment au navigateur. Ce n’est ni un chiffrement ni un contrôle d’accès au compte.[11]

Pour une réponse personnalisée qui doit être revalidée, Cache-Control: no-cache, private est un schéma documenté par MDN.[11] Réservez l’absence de stockage aux réponses dont votre politique exige qu’elles ne soient pas conservées.

Un cache géré peut suivre ses propres règles : contrôlez la documentation et le comportement du CDN ou du serveur, pas seulement Cache-Control.[11] Enfin, un cookie ne rend pas automatiquement une réponse privée.[11]

Exclure les routes dynamiques et maîtriser les sessions

WooCommerce demande d’exclure le panier, la validation de commande et le compte client du cache, car ces pages affichent des informations propres au visiteur.[10] Vérifiez les URL configurées, leurs variantes linguistiques et les étapes du compte. Une règle visant seulement /cart/ est insuffisante si votre panier utilise une autre adresse.

Notre approche consiste ensuite à tracer les variations : connexion, panier actif, devise ou tarification selon le profil, si ces fonctions existent. Pour le HTML partagé, privilégiez un contournement lorsque la session personnalise la réponse. Une variation plus fine exige des clés documentées et une recette démontrant l’isolation.

Les cookies woocommerce_cart_hash, woocommerce_items_in_cart et wp_woocommerce_session_ font partie des signaux décrits par WooCommerce.[10] Paramétrez leur traitement suivant l’intégration ; ne les supprimez pas pour augmenter artificiellement les réponses servies depuis le cache.

L’exclusion de _wc_session_ est également évoquée pour les systèmes proposant un cache de base de données, selon l’extension ou l’hébergement.[10] Ce conseil conditionnel ne justifie pas de désactiver tout cache objet.

Contrôlez aussi le mini-panier intégré aux pages publiques. Si ce bloc est renouvelé séparément, vérifiez la réponse qui l’alimente dans les deux profils : une page correctement exclue ne protège pas un fragment personnalisé stocké ailleurs.

Table de diagnostic par couche et scénario utilisateur

Voici une grille de travail, pas une liste d’incidents observés. Les symptômes sont des scénarios de diagnostic ; les preuves indiquent ce que votre recette doit établir.

Scénario utilisateurCouche à examinerContrôle prioritaireDécision et preuve attendue
Visiteur anonyme, prix ancienPage et CDNComparer la fiche enregistrée, le HTML reçu et la réponse après purge cibléeInvalider les copies concernées ; conserver le prix attendu et les réponses.
Prix ancien dans un seul navigateurNavigateurComparer le même parcours dans un profil neufExaminer la fraîcheur HTTP ; conserver les en-têtes et la comparaison.
Panier d’un autre visiteurPage et CDNTester séparément les sessions A et BExclure le parcours personnalisé ; prouver que chaque session garde ses articles.
Session incohérente malgré un HTML récentObjet ou base de donnéesExaminer les clés et exclusions documentéesAjuster la règle identifiée ; joindre sa configuration et le test.
Formulaire refusé après retour sur la pagePage et navigateurVérifier le jeton éventuel et la réponse d’envoiAdapter la fraîcheur ou contourner le cache ; conserver un envoi de test accepté.
Ajout au panier via une URLServeur et CDNContrôler la règle sur ?add-to-cart=Prévoir un contournement adapté, comme dans l’exemple Varnish documenté par WooCommerce.[10]

Contrôler dans l’ordre et conserver une preuve de validation

Avant toute modification, préparez une fiche de recette : URL, scénario, état de connexion, contenu attendu, couches actives et changement envisagé. Utilisez des comptes de test et des coordonnées fictives. Notez les noms des cookies utiles, jamais leurs valeurs ni les jetons dans un document partagé.

  1. Établir la référence. Vérifiez la donnée enregistrée et le comportement sans réutilisation par les caches concernés. Sur une préproduction protégée, testez d’abord le parcours dynamique, puis activez les couches séparément. Une préproduction dont les règles de cache diffèrent ne valide pas la production.
  2. Suivre la réponse. Examinez le navigateur, puis le CDN, le cache de page et enfin les objets si nécessaire. Relevez les en-têtes disponibles et les indicateurs du fournisseur. L’absence d’un indicateur ne prouve pas l’absence de cache.
  3. Décider et purger. Corrigez la couche identifiée, purgez les URL concernées et vérifiez les variantes. Organisez aussi l’invalidation après changement de prix, de contenu ou de configuration ; ne comptez pas uniquement sur une purge manuelle.
  4. Prouver l’isolation. Ouvrez deux profils de navigateur distincts, A et B. Ajoutez des articles différents, naviguez vers le compte et soumettez les formulaires autorisés. Deux onglets du même profil ne constituent pas deux sessions isolées. Répétez ensuite ces parcours après réutilisation du cache, puis après déconnexion. Un test réussi juste après purge ne vérifie pas toutes les réponses conservées.

Archivez la configuration retenue, les captures expurgées, les réponses pertinentes et la décision d’acceptation. Ne validez pas si une donnée passe d’une session à l’autre, même lorsque le chargement paraît meilleur.

Cas fictif : ancien prix, paniers toujours distincts

Dans ce cas explicitement fictif, une boutique affiche un ancien prix sur une fiche produit, alors que le panier doit rester propre à chaque visiteur. Commencez par vérifier le prix enregistré et la réponse publique : une copie HTML périmée n’est pas une erreur de session.

Si la fiche publique est la copie périmée, ciblez son invalidation dans le cache de page et le CDN. Si le prix varie selon le compte, traitez cette variante comme personnalisée, sans publier sa réponse dans un cache commun.

La validation attendue associe deux constats : la fiche présente le prix de référence et les paniers A et B restent distincts après navigation et retour sur la fiche. Un prix corrigé ne suffit pas à accepter la configuration.

Formulaires : séparer affichage, envoi et données personnelles

Pour chaque formulaire, identifiez la page d’affichage, la destination de l’envoi, les éventuels jetons et les données préremplies. Notre règle de recette est de tester l’affichage, l’envoi, le message de confirmation et une nouvelle tentative après navigation. Le HTML public et la réponse personnalisée ne doivent pas recevoir automatiquement la même politique.

Si l’extension génère un jeton dépendant de la session ou de sa durée de validité, vérifiez son mécanisme de renouvellement. À défaut de compatibilité documentée, contournez le cache de page sur ce parcours ; ne retirez pas la protection pour rendre le formulaire utilisable. Excluez du cache partagé les réponses d’envoi contenant des données personnelles ou un état de session.

Ces réglages ne démontrent pas une conformité RGPD : ils ne vérifient ni la base légale du formulaire ni sa politique de conservation. Une fois la recette fonctionnelle validée, notre guide des Core Web Vitals aide à distinguer chargement, interactivité et stabilité avant d’autres corrections.

Questions fréquentes

Pourquoi la réinitialisation du mot de passe revient-elle à la connexion ?

WooCommerce signale qu’une page de compte mise en cache peut provoquer cette boucle, notamment si le cache serveur ne l’exclut pas.[10] Demandez une vérification à l’hébergeur, puis retestez le lien avec un compte fictif, sans session déjà connectée. Incluez les étapes de réinitialisation dans l’exclusion du parcours de compte, pas seulement son écran principal.

Peut-on conserver les fichiers CSS en cache sur le compte client ?

Oui, les fichiers statiques immuables se prêtent particulièrement au cache.[11] Le HTML du compte et ses ressources publiques n’ont pas la même politique. Vérifiez que le fichier reste identique pour tous et ne contient aucune donnée de session. Lorsqu’un fichier change, contrôlez son versionnement ou son invalidation, sans désactiver indistinctement le cache de tous les éléments.

Faut-il tout purger après une modification de produit ?

Pas systématiquement. Recensez les pages qui reprennent la donnée modifiée : fiche, catégorie, recherche ou bloc de recommandations, selon votre site. Une purge ciblée est pertinente si ces dépendances sont connues et couvertes par l’intégration. Si elles ne le sont pas, choisissez une purge plus large documentée, puis refaites la recette ; ne supposez pas que seule la fiche change.

Votre prochaine action : formaliser une recette

Choisissez une fiche produit, le panier et un formulaire de test. Renseignez la grille, identifiez le responsable de chaque couche et exigez les preuves d’isolation avant de conserver un réglage. Si les règles de l’hébergement, du CDN et de WordPress se recouvrent, les services web de 4SYSTEM peuvent vous aider à cadrer le diagnostic et la validation.

Sources

FR