Incompatibilités entre le plugin CrowdHandler pour WordPress et la mise en cache

Nos clients installent le plugin CrowdHandler pour faire face à un trafic intense. Sans surprise, ces mêmes clients installent souvent des plugins de mise en cache pour accélérer leurs sites web. Malheureusement, un conflit peut survenir entre les deux, et les plugins de mise en cache ainsi que les services cloud peuvent nuire à la capacité de CrowdHandler à répartir le trafic et à rediriger les utilisateurs vers votre site de manière équitable.

À moins de bien maîtriser le fonctionnement de votre système de mise en cache, nous vous recommandons de désactiver les plugins de mise en cache et les services de mise en cache dans le cloud lorsque vous utilisez CrowdHandler. Des utilisateurs ont signalé des problèmes lors de l'utilisation de notre plugin WordPress avec :

  • Kinsta
  • NitroPack
  • Cache LiteSpeed
  • CloudFlare (lorsqu'il est configuré pour mettre en cache les pages, et pas seulement les ressources)

Il existe de nombreux plugins et services de mise en cache pour WordPress, et d’autres, non mentionnés ci-dessus, pourraient poser des problèmes. Bien que CrowdHandler se comporte en « bon citoyen » et définisse des en-têtes de cache conformes aux normes afin de faciliter le fonctionnement des services tiers, ceux-ci ne sont pas toujours respectés, car certains plugins cherchent à optimiser la mise en cache en contournant les normes.

Les services basés sur le cloud peuvent être particulièrement exposés à ce problème, car le comportement de mise en cache est géré en dehors de WordPress et ne peut pas être contourné par notre plugin.

Remarque : nous ne sommes pas en mesure de résoudre les problèmes de configuration dus à des incompatibilités entre plugins ou à des services tiers. Si le comportement de la mise en cache vous pose problème et que vous ne parvenez pas à résoudre ces difficultés en désactivant des plugins, envisagez de désactiver le plugin WordPress et d'utiliser notre code JavaScript à la place. Ce code JavaScript est compatible avec les systèmes de mise en cache, et la combinaison de pages correctement mises en cache et de ce code JavaScript peut s'avérer efficace pour réduire la charge sur les sites WordPress.

C'est quoi le problème ?

Notre plugin WordPress vérifie le cookie de l'utilisateur via l'API CrowdHandler et redirige l'utilisateur vers la salle d'attente s'il doit patienter. Les plugins de mise en cache peuvent mettre en cache le cookie et/ou la redirection. Cela signifie que les utilisateurs peuvent revenir sur le site depuis la salle d'attente mais être renvoyés vers celle-ci, car le plugin de mise en cache a mis en cache le cookie ou la redirection d'un autre utilisateur. Cela aura pour conséquence que les utilisateurs seront redirigés vers la salle d'attente à plusieurs reprises, et que l'accès au site leur sera accordé ou refusé de manière apparemment aléatoire.

Puis-je vérifier si mon site est concerné par ce problème ?

Si vous pensez que votre site est confronté à ce problème, ou si vous souhaitez vérifier cette hypothèse, vous pouvez effectuer un test simple dans une fenêtre de terminal. Exécutez la commande suivante :

curl -I https://yourdomain.com/some-protected-url

Vous devriez voir s'afficher les en-têtes CrowdHandler renvoyés par votre page, y compris le cookie CrowdHandler. Si vous ne voyez aucun en-tête, mais que vous constatez la présence d'un en-tête de type « cache: hit », cela signifie que vous consultez une page mise en cache et que le plugin CrowdHandler n'est pas appelé. Si vous voyez bien les en-têtes et le cookie, répétez rapidement la requête. Si le même cookie est renvoyé (valeur identique), cela signifie qu’il est mis en cache.

Que dois-je faire ?

  1. Désactivez les plugins et services de mise en cache, puis refaites le test. Si un nouveau cookie apparaît à chaque fois, cela signifie que le problème est résolu. (Il se peut que vous deviez patienter un certain temps avant que les caches n'expirent et que la correction ne soit effective.)
  2. Si vous ne parvenez pas à désactiver les services de mise en cache, passez à la méthode d’implémentation via JavaScript dans le panneau d’administration de CrowdHandler, assurez-vous que notre code JavaScript est bien installé sur votre site, puis désactivez le plugin WordPress. L’intégration JavaScript gère la création et la récupération des cookies ainsi que les redirections via JavaScript ; elle n’est donc pas susceptible d’être mise en cache. Dans ce cas, la mise en cache est bénéfique. Si vos plugins de mise en cache fonctionnent correctement, vos pages d'atterrissage devraient s'afficher rapidement et le JavaScript redirigera l'utilisateur avant qu'il n'interagisse avec des pages non mises en cache, ce qui entraînerait une charge élevée.
  3. Si CrowdHandler ne protège que les URL non mises en cache, il ne sera pas concerné par ce problème ; vous pouvez donc essayer de limiter la couverture des URL de votre salle d'attente aux seules URL qui ne sont pas mises en cache.
  4. Si la couche de mise en cache à l'origine du problème est Cloudflare, vous devriez probablement utiliser notre Edge Worker Cloudflare plutôt que le plugin WordPress. Configurez l'Edge Worker et désactivez le plugin WordPress. Si vous utilisez notre Edge Worker Cloudflare avec un backend WordPress, nous vous recommandons de créer un ticket d'assistance afin que nous puissions configurer des exclusions d'URL WordPress sur votre compte.