Pourquoi un changeur de devises et un cache de page s'affrontent-ils ?
Presque chaque ticket de support qui commence par « les prix s'affichent dans la mauvaise devise » se termine au même endroit : un cache de page. Il est utile de comprendre pourquoi les deux se battent, car la solution dépend de celui qui gagne.
Ce que fait réellement un cache de page
Un cache de page stocke le HTML final d'une page et sert ce même HTML à tout le monde. C'est tout l'intérêt — le serveur cesse de rendre et commence à distribuer un fichier. C'est aussi exactement le problème. Le prix sur une page produit n'est pas un texte fixe : il dépend de la devise que ce visiteur particulier a sélectionnée. Mettez en cache la page pendant qu'un visiteur navigue en USD, et le prochain visiteur obtient également USD, quoi qu'il ait choisi.
Les deux solutions
Il n'y a que deux approches honnêtes, et FOX les prend en charge toutes les deux.
Exclure les pages du cache. Les prix sont toujours corrects, et vous perdez la vitesse pour laquelle le cache a été acheté. C'est le bon choix pour le panier, la page de paiement et les pages de compte, qui ne devraient de toute façon jamais être mises en cache.
Mettre en cache la page et corriger les prix dans le navigateur. FOX livre la page mise en cache telle quelle, puis redessine les nœuds de prix au chargement dans la devise que le visiteur a sélectionnée. C'est ce qu'active l'option Cache dans les paramètres du plugin. La page reste rapide, et il y a un bref instant avant que le redessin ne s'applique — c'est à cela que sert le préchargeur au-dessus du prix.
Où cela se passe mal
La deuxième approche nécessite que le plugin connaisse la devise du visiteur, et c'est là que les plugins de mise en cache et les CDN interfèrent.
Si le plugin stocke la devise dans un cookie, la toute première requête d'un nouveau visiteur définit ce cookie. Les caches agressifs — Cloudflare APO est l'exemple strict — traitent toute réponse portant un en-tête Set-Cookie comme personnalisée et refusent de la mettre en cache. Le résultat est un site où le cache semble activé et ne met en fait jamais rien en cache.
Depuis la v.2.5.0, FOX évite cela. Avec Storage réglé sur Transient et l'option de cache activée, le plugin conserve une clé aléatoire dans le localStorage du navigateur au lieu de définir un cookie, de sorte que le HTML qui quitte le serveur est identique pour tout le monde et que le cache peut faire son travail. Toute autre combinaison de stockage se comporte comme avant.
La checklist
- Panier, page de paiement et pages de compte exclus du cache — toujours.
- L'option Cache du plugin activée si les pages de la boutique sont mises en cache.
- Storage réglé sur Transient si un CDN se trouve devant le site.
- Le JavaScript du plugin non différé ou combiné par un optimiseur — le redessin s'exécute au chargement, et un optimiseur qui le retarde transforme le préchargeur en un spinner permanent.
Si les prix sont toujours incorrects après ces quatre points, le cache n'en est pas la cause. Ouvrez un sujet de support avec l'URL de la page et la configuration de mise en cache, et nous l'examinerons.