Le webhook de commentaire WP Discourse ne déclenche pas un rafraîchissement du cache WP Rocket

Comment gérons-nous la mise en cache des pages dans WordPress ?

J’utilise WP-Rocket sur notre site, mais la mise en cache des pages (même problème si j’utilise uniquement Cloudflare APO) empêche la mise à jour du nombre de commentaires. J’ai vérifié cela en désactivant WP-Rocket (et/ou APO), j’ai posté une réponse sur le fil de discussion correspondant et le nombre de commentaires se met à jour, mais de manière erratique. C’est-à-dire, pas instantanément ou comme on pourrait s’y attendre.

J’ai donc trouvé une astuce pour ajouter un web hook et cela a permis au nombre de commentaires de se mettre à jour de manière fiable.

Cependant, avec la mise en cache des pages activée (WP-Rocket ou APO), et en utilisant ce web hook, les nombres de commentaires ne se mettent pas à jour lorsqu’une nouvelle réponse est postée sur le forum.

L’essentiel, semble-t-il, est que le web hook ne déclenche pas correctement l’environnement WP pour déclencher le rafraîchissement de la page mise en cache. Il semble que nous ayons un bug dans la matrice. :grinning_face_with_smiling_eyes:

Modification : Un autre point. J’ai configuré WP-Rocket de manière à ce que lorsque je suis connecté à WordPress, les pages ne soient pas mises en cache pour moi. Uniquement pour les visiteurs. J’ai remarqué que je vois les nombres de commentaires se mettre à jour lorsque je suis connecté à WordPress, mais je ne les vois pas lorsque je suis un visiteur en mode navigation privée.

1 « J'aime »

Je n’ai pas de réponses, mais comme vous le savez, WP Rocket essaie de faire une copie statique et d’éliminer les appels PHP et de base de données. Ce n’est pas un cache en soi, mais bien sûr, c’est une question de définition.

Mais WP Rocket a beaucoup de problèmes de nos jours, et c’est peut-être l’un des moins importants quand on pense au site WordPress lui-même.

Eh bien, de cette façon, cela devrait fonctionner.

Salut @Brandon007, merci d’avoir expliqué ton problème. Si je comprends bien :

  • Le plugin WP Discourse met à jour correctement les nombres de commentaires.
  • Le cache WP Rocket n’est pas vidé lorsque les nombres de commentaires sont mis à jour.

J’ai modifié le titre de ton message de « WP Discourse Plugin Not Updating Comment Count » à « WP Discourse comment webhook does not trigger a WP Rocket Cache refresh ».

La réponse de base à ton problème est que ce comportement est attendu. Le plugin WP Discourse n’a aucune intégration spécifique avec WP Rocket et n’en ajoutera pas dans un avenir prévisible.

Mais je peux toujours t’aider ici en ajoutant une action qui se déclenche après que le rappel du webhook de synchronisation des commentaires a mis à jour les métadonnées du sujet (où le nombre de commentaires est stocké). Tu pourrais alors écrire ton propre rappel d’action pour effectuer le vidage de cache que tu souhaites. Cela fonctionnerait-il pour ta situation ?

3 « J'aime »

@Angus vous avez compris !

Je serai probablement perdu à écrire du code haha, mais si vous pouvez le rendre possible. Cela nous met, moi et les autres utilisateurs, un pas dans la bonne direction. Il semble qu’avec votre modification, le code côté utilisateur pourra être ajouté pour vider le cache de n’importe quel plugin de cache. Ce serait encore mieux que de se concentrer sur un seul produit. J’ai essayé plusieurs méthodes de cache sur un site de développement et elles ont toutes donné le même résultat de toute façon.

Alors continuez mon bon monsieur, et merci pour votre réponse.

Salut Angus. Je ne sais pas si c’était quelque chose que tu regardais encore ?

Autre chose que je voulais ajouter. Dans WordPress natif, et en utilisant n’importe quelle forme de mise en cache de page. Une fois qu’un commentaire est laissé, le cache de page est purgé de lui-même. N’y a-t-il pas un moyen pour que WP Discourse puisse imiter ce comportement ?

Pas avec WP Rocket. Il conserve les commentaires dynamiques, comme il se doit.

Salut Brandon, oui, il y aura une action pour cela, vous permettant de vider le cache WP Rocket (ou tout autre cache) dans ce scénario lors de la prochaine version.

Je ne remets pas en question vos compétences ni celles de qui que ce soit et je n’y connais rien, mais il ne peut y avoir de “ou de cache” car, à ma connaissance, WP Rocket a besoin d’outils différents pour purger son cache que W3 Total Cache, que WP Fastest Cache, que tout proxy inverse comme Varnish ou Nginx.

Et si WP Rocket crée une partie statique de la page, c’est-à-dire le cache, à partir de la section des commentaires, il y a des problèmes beaucoup plus importants que la purge.

C’est exact. Le plugin WP Discourse fournira simplement une action qui permettra aux sites utilisant différentes solutions de mise en cache de purger la mise en cache au moment approprié en utilisant la méthode appropriée à la solution de mise en cache utilisée.

1 « J'aime »

Angus, merci pour le suivi. Avez-vous une idée générale de la date de sortie ?

De plus, est-il possible pour WP-Discourse d’imiter le comportement des commentaires natifs de WordPress ? Simplement, les solutions de mise en cache de pages ont une option, de sorte que le cache de la page puisse être vidé lorsqu’un utilisateur laisse un nouveau commentaire sur cette page. C’est idéal.

Comme vous le savez, à ce jour, nous ne pouvons utiliser aucun type de mise en cache de page si nous voulons que le nombre de commentaires s’incrémente. C’est un inconvénient majeur pour les utilisateurs de WordPress qui se soucient des optimisations de vitesse.

J’espère que non, car un tel comportement serait un gaspillage de ressources et constituerait en fait un obstacle majeur.

Je suis encore un peu confus car nativement WordPress n’a pas de mise en cache et WP Rocket ne vide certainement pas tout son soi-disant cache après un commentaire.

Juste une note que l’action que j’ai mentionnée ci-dessus sera ajoutée dans 2.4.6 qui est actuellement en cours de préparation pour la sortie.

L’action recevra les identifiants des articles Wordpress qui ont été mis à jour par le webhook comme argument, c’est-à-dire

do_action( 'wpdc_after_webhook_post_update', $post_ids );

Voir plus loin

4 « J'aime »

J’ai oublié de mentionner que votre mise à jour a résolu le problème ! Merci. :+1:t3:

Pour toute autre personne rencontrant ce problème lors de l’exécution de WP-Rocket avec WP-Discourse. Le code suivant (à insérer dans votre fichier de fonctions Wordpress) garantira qu’une fois qu’un commentaire est fait sur le post Discourse correspondant, le cache de ce post sera purgé.

if( function_exists( 'rocket_clean_post' ) ){
	add_action( 'wpdc_after_webhook_post_update', 'bulk_rocket_clean_post’);
}

function bulk_rocket_clean_post(array $ids){
    foreach ($ids as $id) {
        rocket_clean_post($id);
    }
}
3 « J'aime »