Créer différents fichiers de cache avec des cookies dynamiques et obligatoires
Dans ce guide
Certains plugins peuvent utiliser des cookies pour définir des informations dynamiques sur un utilisateur et différencier le contenu en conséquence.
Par exemple, un plugin tiers peut placer un cookie pour détecter et stocker votre pays, afin de vous montrer le contenu dans votre langue spécifique. Un problème de mise en cache peut survenir si le plugin tente de modifier le contenu de manière dynamique à l'aide de PHP. PHP ne fonctionne pas sur une page mise en cache, donc même si le cookie est correctement placé, le contenu ne changera pas et cela entraînera l'affichage d'un contenu incorrect.
L'idéal serait que le plugin tiers utilise le JavaScript pour gérer cela puisqu'il s'exécutera sur une page en cache, mais lorsque ce n'est pas possible, il y a 2 filtres utiles dans WP Rocket que les développeurs•euses peuvent utiliser.
Des filtres pour les développeurs•euses
Si vous êtes le développeur du plugin, vous pouvez les utiliser dans votre code pour créer une compatibilité avec notre plugin. Ils peuvent être utilisés simultanément si nécessaire, ou l'un ou l'autre peut être utilisé seul, selon votre situation.
- rocket_cache_dynamic_cookies
Celui-ci crée un fichier cache pour chaque valeur d'un cookie spécifié. - rocket_cache_mandatory_cookies
Celui-là empêche la mise en cache jusqu'à ce que le cookie spécifié soit placé
Un exemple du fonctionnement de ces filtres peut être observé dans notre compatibilité avec l’extension Aelia Currency Switcher..
Cela produit des fichiers de cache comme les suivants, avec la valeur du cookie ajoutée au nom du fichier :
Un plugin d'aide pour nos clients
Si vous êtes l'utilisateur d'un plugin qui utilise des cookies pour des informations dynamiques, vous pouvez créer la compatibilité avec WP Rocket sur votre site en modifiant le plugin d'aide ci-dessous :
📥 Télécharger (.zip): WP Rocket | Cache Dynamic Cookie
Développeurs•euses : vous trouverez le code de ce plugin sur GitHub.
Comment l’utiliser ?
1. Téléchargez le plugin d'aide, dézippez-le et ouvrez le fichier PHP dans un éditeur de texte.
2. Vous devez connaître le nom du cookie qui stocke les informations dynamiques. Vous pouvez le trouver dans les outils de développement de votre navigateur. Si vous n'êtes pas sûr de savoir comment faire, contactez le développeur du plugin et demandez-lui :)
Dans la capture d'écran ci-dessous, le nom du cookie est : yith_woocompare_list
3. Placez le nom du cookie dans la ligne 21 du plugin.
define( 'WPROCKETHELPERS_CACHE_DYNAMIC_COOKIE', 'your-cookie-id-here' );
en :
define( 'WPROCKETHELPERS_CACHE_DYNAMIC_COOKIE', 'yith_woocompare_list' );
4. Zippez le plugin et installez-le/activez-le sur votre site.
Possible problème de cache du navigateur
Si vous rencontrez un problème où le navigateur affiche le mauvais contenu à l'utilisateur après le changement de cookie, veuillez installer et activer le plugin d'aide suivant pour ajuster les règles de mise en cache du navigateur :
📥 Télécharger (.zip): WP Rocket | Add custom htaccess rules to set no-store on HTML
Développeurs : Vous pouvez trouver le code de ce plugin sur GitHub.
Pourquoi la première visite ne reçoit-elle pas la page en cache ?
Si un cookie requis/obligatoire est défini par votre thème ou un plugin que vous avez installé, aucun cache ne sera servi tant que le cookie n'aura pas été placé dans le navigateur du visiteur.
Par exemple, si un cookie obligatoire est placé après le chargement de la première page (comme par exemple avec l’option de détection du navigateur de Polylang), le(s) fichier(s) mis en cache sera(ont) servi(s) lorsque l'utilisateur naviguera vers une autre page ou actualisera la page. Dans ce cas, les visiteurs du site obtiendront toujours une page non mise en cache lorsqu'ils visiteront le site pour la première fois (ou après avoir effacé les cookies de leur navigateur).
Cette méthode fonctionnera-t-elle avec un serveur de cache et Varnish ?
Non. L'utilisation de ces fonctionnalités nécessite l'exécution de PHP. Lorsqu'il y a des couches supplémentaires de cache et que les pages sont servies à partir de ces couches, aucun PHP n'est exécuté.
Ces fonctionnalités ne sont donc pas compatibles avec des couches supplémentaires de cache.
Plugins avec compatibilité automatique basée sur des cookies obligatoires
WP Rocket a intégré la compatibilité automatique basée sur les cookies obligatoires avec les plugins listés dans cet article.
Cloudflare APO
Cloudflare APO n'est pas compatible avec les cookies dynamiques et obligatoires de WP Rocket, car APO ne peut pas servir différentes versions de cache basées sur différentes valeurs de cookies. Plus d'infos dans cet article.