El webhook de comentarios de WP Discourse no activa una actualización de caché de WP Rocket

¿Cómo manejamos el almacenamiento en caché de páginas en WordPress?

Uso WP-Rocket en nuestro sitio, pero el almacenamiento en caché de páginas (mismo problema si solo se usa Cloudflare APO) está impidiendo que el recuento de comentarios se actualice. Verifiqué esto deshabilitando WP-Rocket (y/o APO), publiqué una respuesta en la publicación del foro correspondiente y el recuento de comentarios se actualiza, pero de manera errática. Es decir, no es instantáneo o como cabría esperar.

Entonces encontré un consejo sobre cómo agregar un web hook y eso permitió que el recuento de comentarios se actualizara de manera confiable.

Sin embargo, con el almacenamiento en caché de páginas activado (WP-Rocket o APO), y usando ese web hook, los recuentos de comentarios no se actualizan cuando alguien publica una nueva respuesta en el foro.

La idea principal, parece, es que el web hook no está activando el entorno de WP correctamente para activar la actualización de la página almacenada en caché. Parece que podríamos tener un fallo en la matriz. :grinning_face_with_smiling_eyes:

Edición: Otro detalle. Tengo WP-Rocket configurado para que cuando inicio sesión en WordPress, las páginas no se almacenan en caché para mí. Solo para los visitantes. Noté que veo que los recuentos de comentarios se actualizan cuando inicio sesión en WordPress, pero no los veo cuando soy un visitante en modo de navegador privado.

1 me gusta

No tengo ninguna respuesta, pero como sabes, WP Rocket intenta hacer una copia estática y eliminar las llamadas a PHP y a la base de datos. No es una caché en sí misma, pero claro, es cuestión de definición.

Pero WP Rocket tiene muchos problemas hoy en día, y este es quizás uno de los menos importantes cuando se piensa en el propio sitio de WordPress.

Bueno, de esa manera debería funcionar.

Hola @Brandon007, gracias por explicar tu problema. Según entiendo:

  • El plugin WP Discourse está actualizando correctamente los recuentos de comentarios.
  • La caché de WP Rocket no se está borrando cuando se actualizan los recuentos de comentarios.

He cambiado el título de tu publicación de “WP Discourse Plugin Not Updating Comment Count” a “WP Discourse comment webhook does not trigger a WP Rocket Cache refresh”.

La respuesta básica a tu problema es que este es un comportamiento esperado. El plugin WP Discourse no tiene ninguna integración específica con WP Rocket y no añadirá ninguna en el futuro previsible.

Pero aún puedo ayudarte aquí añadiendo una acción que se dispara después de que la devolución de llamada del webhook de sincronización de comentarios haya actualizado los metadatos del tema (donde se almacena el recuento de comentarios). Luego podrías escribir tu propia devolución de llamada de acción para hacer la limpieza de caché que desees. ¿Funcionaría eso para tu situación?

3 Me gusta

@Angus ¡lo tienes!

Probablemente me pierda escribiendo código, jaja, pero si puedes hacerlo posible. Eso nos pone a mí y a otros usuarios un paso en la dirección correcta. Parece que, con tu modificación, permitirá agregar código del lado del usuario para borrar la caché de cualquier complemento de caché. Eso sería incluso mejor que centrarse en un solo producto. De todos modos, probé varios métodos de caché en un sitio de desarrollo y todos tuvieron el mismo resultado.

Así que adelante, mi buen señor, y gracias por la respuesta.

Hola Angus. ¿No estás seguro si esto era algo en lo que todavía estabas trabajando?

Algo más que quería añadir. Dentro de WordPress nativo, y usando cualquier forma de caché de página. Una vez que se deja un comentario, la caché de página se purga por sí sola. ¿No hay una forma en que WP Discourse pueda imitar ese comportamiento?

Con WP Rocket no. Mantiene los comentarios dinámicos, como debe ser.

Hola Brandon, sí, habrá una acción para esto, que te permitirá borrar la caché de WP Rocket (o cualquier otra caché) en este escenario en la próxima versión.

No cuestiono tus habilidades ni las de nadie y no sé nada, pero no puede haber nada como “o cualquier caché” porque, hasta donde sé, WP Rocket necesita herramientas diferentes para purgar su caché que W3 Total Cache que WP Fastest Cache que cualquier proxy inverso como Varnish o Nginx.

Y si WP Rocket está creando una parte estática de la página, es decir, caché, a partir de la sección de comentarios, hay problemas mucho mayores que la purga.

Es correcto. El plugin WP Discourse simplemente proporcionará una acción que permitirá a los sitios que utilizan diferentes soluciones de caché purgar la caché en el momento apropiado utilizando cualquier método que sea apropiado para la solución de caché que se esté utilizando.

1 me gusta

Angus, gracias por el seguimiento. ¿Alguna idea general sobre la fecha de lanzamiento?

Además, ¿es posible que WP-Discourse imite el comportamiento de los comentarios nativos de WordPress? Simplemente significa que las soluciones de caché de páginas tienen una opción, por lo que la caché de páginas se puede borrar cuando un usuario deja un nuevo comentario en esa página. Esto es ideal.

Como sabes, a día de hoy, no podemos usar ningún tipo de caché de página si queremos que el recuento de comentarios se incremente. Eso es un gran inconveniente para los usuarios de WordPress preocupados por las optimizaciones de velocidad.

Esperemos que no, porque tal comportamiento sería un desperdicio terrible de recursos y, de hecho, casi un factor decisivo.

Todavía estoy un poco confundido porque de forma nativa WordPress no tiene caché y WP Rocket definitivamente no purga toda su llamada caché después de un comentario.

Solo una nota de que la acción que he mencionado anteriormente se agregará en 2.4.6, que actualmente se está preparando para su lanzamiento.

La acción recibirá los ids de las publicaciones de Wordpress que han sido actualizadas por el webhook como argumento, es decir,

do_action( 'wpdc_after_webhook_post_update', $post_ids );

Ver más

4 Me gusta

Olvidé mencionar que tu actualización solucionó el problema. ¡Gracias! :+1:t3:

Para cualquiera que tenga este problema mientras ejecuta WP-Rocket con WP-Discourse. El siguiente código (insértalo en tu archivo de funciones de Wordpress) asegurará que una vez que se haga un comentario en la publicación correspondiente de Discourse, se purgará la caché de esa publicación.

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 Me gusta