Pregunta sobre WP REST Cache de Wordpress:

Depósito de descarga manual

Un usuario preguntó 👇

Oye,

Solo uso puntos finales personalizados.

¿Hay alguna forma de vaciar el caché manualmente?

Mejor, Adam

(@acato)

Hace 1 año, 8 meses

Hola @adamhammad

Sí, hay varias formas de borrar el caché manualmente:

Borre todos los cachés, haciendo clic en el botón ‘Borrar caché REST’ en la barra de wp-admin (parte superior de la pantalla) Opción de borrado de cachés, yendo a Configuración> Caché REST de WP> Cachés de API de punto final, seleccione uno o más cachés y luego Acciones masivas> Vaciar caché> Aplicar solo limpieza de caché, yendo a Configuración> WP REST Cache> Cachés de API de punto final, coloque el cursor sobre el caché que desea vaciar y haga clic en ‘Vaciar caché’

Respondo tu pregunta.

(@adamhammad)

Hace 1 año, 8 meses

Hola @acato

¿Hay alguna forma de hacer esto mediante programación?

(@acato)

Hace 1 año, 8 meses

Hola @adamhammad

En este punto, solo hay dos funciones disponibles para vaciar cachés en un programa:

1. Enjuague todas las cachés de un tipo de objeto específico
Ejemplo:
WP_Rest_Cache_PluginIncludesCachingCaching::get_instance()->delete_object_type_caches( 'products' );
Esto elimina todas las cachés para el tipo de objeto products

2. Enjuague la caché separada
Ejemplo:
WP_Rest_Cache_PluginIncludesCachingCaching::get_instance()->delete_cache( '8dbc9f7badb0ed2d50f1eaf200422a49' );
Desafortunadamente, como puede ver, necesitaría la clave de caché para esto. Que, por cierto, es solo un hash md5 de la ruta del punto final con parámetros de consulta. Así que para https://www.domain.com/wp-json/wp/v2/pages sería la clave de caché md5( '/wp-json/wp/v2/pages' );. Sin embargo, tenga en cuenta que se deben tener en cuenta todos los parámetros de consulta.

Sin embargo, su pregunta me recuerda que deberíamos agregar más funciones (mejor usabilidad) para vaciar cachés mediante programación. Discutiré esto internamente y agregaré algunas funciones pronto. ¿Tiene alguna sugerencia sobre cómo le gustaría hacer esto? Es decir, vaciar todos los cachés para un punto final específico independientemente de los parámetros de consulta, vaciar el caché de acuerdo con su ruta especificada (sin necesidad de poseerlo),…?

(@adamhammad)

Hace 1 año, 8 meses

Bien, puedo usar esas funciones que son geniales. Cambiar la ruta final a md5 no es un problema, pero parece que se está uniendo aquí a partir de una prueba rápida.

Básicamente, los casos de uso que describe son los que estoy tratando de lograr.

– Vaciar todas las cachés para el punto final independientemente de los parámetros de consulta – Vaciar la caché por ruta / punto final específico

Sería un buen punto de partida.

(@acato)

Hace 1 año, 8 meses

Hola @adamhammad

Lo agregaré a mi lista de tareas pendientes. Lamentablemente, no me queda tiempo para trabajar esta semana.

(@adamhammad)

Hace 1 año, 8 meses

No hay problema, la información que proporcionaste es suficiente para mi solución.

Tengo algunos puntos finales que verifican la autenticación dentro de ellos, quiero una forma de asegurarme de que los administradores no presenten solicitudes de autenticación. ¿Alguna idea sobre cómo abordar esto?

(@acato)

Hace 1 año, 8 meses

Hola @adamhammad

Acabamos de lanzar una nueva versión de nuestro plugin que ahora incluye una función para vaciar cachés mediante programación por punto final. Entonces, por ejemplo, si desea vaciar las cachés al punto final /wp-json/wp/v2/pages Puedes hacerlo:
WP_Rest_Cache_PluginIncludesCachingCaching::get_instance()->delete_cache_by_endpoint( '/wp-json/wp/v2/pages' );

Esta función asume dos parámetros adicionales: 1. $strictness: Esto define la intensidad con la que desea hacer coincidir los cachés, tiene tres opciones para esto:
WP_Rest_Cache_PluginIncludesCachingCaching::FLUSH_STRICT: Elimine cachés con una ruta de punto final que coincida solo con la misma ruta de punto final (y parámetros de consulta).
WP_Rest_Cache_PluginIncludesCachingCaching::FLUSH_PARAMS: Elimine las cachés con una ruta de punto final que coincida con la misma ruta de punto final con cualquier parámetro de consulta que pueda usarse.
WP_Rest_Cache_PluginIncludesCachingCaching::FLUSH_LOOSE: Elimine cachés con una ruta de punto final que coincida con cualquier caché dada comenzando con la ruta del punto final (ignorando cualquier parámetro de consulta o subpasos que sigan la ruta específica).

2. $force: Ya sea para eliminar cachés ($ force = true) o simplemente vaciar ($ force = false).

(@acato)

Hace 1 año, 8 meses

En cuanto a su punto final que verifica la autenticación en el interior: ¿está seguro de que desea alojar este punto final?

En este punto no veo una opción para hacer esto, el código en el que comprobamos si debemos alojarnos o no (includesapiclass-endpoint-api.php línea 203) se ejecuta desde un plugin que debe usarse y, por lo tanto, se ejecuta antes que cualquier plugin o código de tema. Por lo tanto, agregar un filtro no lo ayudará realmente apply_filters que ejecutado antes de agregar su filtro. Voy a pensar en una solución a esto y discutirlo internamente, tal vez podamos encontrar una solución que funcione para usted.

(@adamhammad)

Hace 1 año, 8 meses

¡Gracias por la actualización! Funciona muy bien, definitivamente solucioné mi problema anterior con la detección de tipos de objetos y la transmisión de errores.

Creo que quiero depositar el punto final, aquí está mi caso de uso:

Tengo un catálogo de productos que están almacenados. Los usuarios administrativos pueden ver los productos de estado ‘borrador’ y ‘privado’, pero los clientes solo ven los productos ‘publicados’. Por lo tanto, las respuestas almacenadas en caché no devolverán lo que un administrador debería ver, y si una administración corrige la respuesta almacenada en caché, mostrará productos ‘borrador’ y ‘privados’ a los clientes.

Supongo que podría crear un punto final específicamente para que los usuarios administrativos accedan al catálogo.

Déjame saber lo que piensas.

(@acato)

Hace 1 año, 8 meses

Hola @adamhammad

Bueno, no crea un punto final nuevo (duplicado) para ser correcto.

Después de pensarlo un poco, creo que hay dos posibles soluciones a este problema:

1. Enviamos un cheque para ver si el usuario actual está autenticado y si es así, no use el almacenamiento en caché. Pero eso significaría que el almacenamiento en caché ya no se usa en todas las respuestas para usuarios autenticados. Eso tampoco se siente bien.

2. Podemos darle la opción de usar un parámetro adicional para decirle al plugin WP REST Cache que omita el almacenamiento en caché. De esa manera, puede decidir en cada solicitud si desea utilizar el almacenamiento en caché o no. Entonces, para los usuarios administrativos, agregaría un parámetro adicional a la llamada REST. esa es una opción para ti?

(@adamhammad)

Hace 1 año, 8 meses

Lo siento, respondí esto.

@acato

El número 2 parece ser una opción más flexible, puedo ver que esto se usa para más que solo fines de autenticación. p.ej. No deposite en base a variables ambientales.

(@acato)

Hace 1 año, 8 meses

Hola @adamhammad

Acabamos de lanzar una nueva versión del plugin. Hemos agregado un parámetro GET que puede usar para omitir el almacenamiento en caché. Simplemente agregue ?skip_cache=1 llamas a REST.

¡Háganos saber si esto funciona para usted!

(@ tuomo2)

Hace 1 año, 6 meses

Editar: No importa, volverá a usted cuando tenga un poco más de investigación 🙂 ¡Gracias por un plugin increíble!

¿Solucionó tu problema??

0 / 0

Deja una respuesta 0

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *