Solucionar problemas del almacenamiento en caché JSON progresivo
Empieza por el síntoma visible y, a continuación, identifica si el fallo está en la generación, el almacenamiento, la entrega, la invalidación o la frescura de la CDN. Cambiar varios interruptores a la vez hace más difícil demostrar cuál es la capa activa.
Establece una prueba controlada
Antes de usar las secciones de síntomas:
- Prueba un archivo progresivo POM Theme real;
- Copia una URL
.jsonlimpia del panel de red del navegador; - Usa una ventana privada sin iniciar sesión y con un carrito vacío;
- Omite la CDN mediante un método aprobado de prueba en el origen;
- Elimina todos los parámetros de consulta;
- Deja temporalmente fuera de la prueba la entrega JSON de Apache;
- Activa el maestro JSON, la entrega temprana de PHP, la alternativa de WordPress y las escrituras;
- Borra la caché JSON progresiva.
Solicita una vez para la generación y una segunda vez para la reutilización.
No se crean archivos JSON
Comprueba la primera cabecera de respuesta.
Si dice:
X-POM-Progressive-Archive-Cache: generated-dynamic
el tema no clasificó la respuesta como reutilizable. Confirma que estás probando la ruta progresiva limpia, no una variante filtrada o dinámica de otro tipo.
Si dice:
X-POM-Progressive-Archive-Cache: generated-cacheable
pero el recuento se mantiene en cero, comprueba:
- Progressive JSON cache está activada;
- JSON writes está activado;
- el tamaño en bytes del JSON está dentro de Maximum JSON file size;
- Cache Location existe o puede crearse;
- PHP puede escribir en el directorio de destino;
- la respuesta es JSON válido y no vacío;
- la prueba se realiza en el mismo sitio multisitio cuyo resumen estás viendo.
No des por hecho que una respuesta correcta demuestra una escritura correcta; WordPress puede seguir devolviendo el JSON generado dinámicamente.
Existe un archivo, pero cada solicitud es dinámica
Determina si la ruta almacenada coincide con el contexto solicitado:
- host y ruta del subsitio;
- prefijo de idioma;
- tipo de contenido;
- hash de contexto;
- modo de archivo;
- número de página;
- elementos por página.
Después confirma:
- WordPress read fallback está activado para una prueba a nivel de enrutador;
- la solicitud tiene una cadena de consulta vacía;
- el archivo es legible, no vacío, JSON válido y está dentro del máximo actual;
- la configuración actual del archivo sigue coincidiendo con la URL;
- ninguna extensión compatible rechaza la respuesta almacenada en caché.
Desactiva temporalmente la entrega temprana de Apache y PHP. Si el tema informa hit, el archivo es válido y el problema anterior reside en la elegibilidad de la solicitud o en la asignación del drop-in/servidor.
La alternativa de WordPress funciona, pero la entrega temprana de PHP no
Esto reduce el problema considerablemente. Revisa:
- PHP early static serving;
- POM Cache → Advanced → WordPress configuration;
- si se carga el drop-in
advanced-cache.phpcorrecto; - el estado de
WP_CACHE; - las cookies de inicio de sesión, contraseña, comentario, sesión de WooCommerce y carrito;
DONOTCACHEPAGE;- los parámetros de consulta;
- la forma de la ruta pública y el subdirectorio de inicio.
La alternativa demuestra que POM Cache puede encontrar y validar el JSON después de que WordPress se cargue. Céntrate en el arranque temprano y en el estado de la solicitud.
Apache devuelve un 404 o HTML
Restaura la configuración de reglas anterior y, a continuación, compara:
- la colocación de la regla antes del bloque de WordPress;
- la raíz de documentos real de Apache;
- la Cache Location actual;
- el subdirectorio
pom-cache-json; %{SERVER_NAME}en comparación con el host de inicio del sitio;- la ruta del multisitio por subdirectorio;
- la asignación del prefijo de idioma;
- la disponibilidad de
mod_rewriteymod_headers.
Un tipo de contenido text/html suele significar que la solicitud cayó en una página de error de WordPress. Un 404 puede significar que el objetivo físico no coincidió con el archivo que POM Cache escribió.
Mantén la entrega temprana de PHP activa como alternativa mientras corriges la regla del servidor.
La segunda solicitud no tiene cabecera de caché de diagnóstico
Posibles explicaciones:
- Apache sirvió el archivo y PHP nunca se ejecutó;
- la CDN sirvió una respuesta almacenada;
- la solicitud omitió la entrega estática;
- otra capa eliminó o reemplazó las cabeceras.
Prueba directamente contra el origen con Apache desactivado temporalmente. No uses solo la velocidad de respuesta para declarar un acierto de caché.
Un lote está obsoleto después de editar una entrada
Verifica:
- Purge JSON on post changes está activado;
- el maestro JSON estaba activado cuando se registraron los hooks para la solicitud;
- el tipo de contenido editado es público/visible;
- el cambio fue un evento normal del ciclo de vida de la entrada y no una escritura directa de datos;
- la salida obsoleta está en un lote JSON posterior, no en la estructura HTML inicial;
- el archivo de origen se eliminó realmente;
- la CDN no está devolviendo una copia más antigua.
Cambiar los términos asignados a una entrada también depende del interruptor de cambios de entrada.
Una etiqueta u orden de taxonomía está obsoleto
Usa Purge JSON on term changes para la creación, edición, eliminación y cambios de orden de términos compatibles.
Usa Purge JSON on post changes cuando la acción consistía en asignar un término a una entrada. Son rutas independientes.
Para metadatos de términos personalizados que modifican la salida visible, borra manualmente salvo que la integración propietaria proporcione una invalidación.
Un idioma permanece obsoleto
Confirma:
- Purge JSON on translation changes está activado;
- la traducción se guardó mediante un flujo de trabajo admitido de POM Translate;
- la ruta pública tiene el prefijo de idioma esperado;
- se han tenido en cuenta las rutas de slug antiguas y nuevas;
- el HTML también se borró si el texto antiguo está en la página inicial;
- la CDN no conserva la URL del JSON localizado.
La invalidación automática de traducciones borra todos los idiomas de JSON del sitio actual, por lo que un archivo de origen restante suele indicar que no se ejecutó ninguna notificación admitida o que estás inspeccionando el espacio de nombres de otro sitio.
Las respuestas por encima del máximo nunca aciertan
Mide el cuerpo de la respuesta en bytes. El valor predeterminado es 1.048.576 bytes y el límite se aplica tanto en la escritura como en la lectura.
Antes de aumentarlo:
- reduce los elementos excesivos por lote;
- inspecciona el marcado de tarjetas renderizadas inusualmente grande;
- asegúrate de que no se esté incluyendo una carga útil de depuración;
- compara los modos de archivo estándar y dividido.
Si una respuesta mayor es legítima, aumenta el límite deliberadamente y vuelve a probar el coste de memoria, almacenamiento y transferencia.
El recuento de herramientas es inesperadamente alto
POM Cache no elimina archivos por antigüedad. Los hashes de contexto antiguos, las rutas retiradas, los lotes profundos, los idiomas y las secciones de términos permanecen hasta la invalidación.
Realiza un borrado manual de JSON y deja que el tráfico real reconstruya el conjunto de trabajo. Si el crecimiento se reanuda de forma inesperada, relaciona los archivos nuevos con las dimensiones de ruta actuales en lugar de eliminar con un temporizador sin comprender la demanda.
Borrar el origen no actualiza a los visitantes
La capa restante probable es la CDN o la caché HTTP del navegador:
- Verifica el cambio de origen;
- Borra el JSON en el origen;
- Solicita y verifica el contenido de origen regenerado;
- Invalida las rutas de espectador de la CDN afectadas más pequeñas;
- Espera a que finalice;
- Solicita públicamente e inspecciona el estado de la caché perimetral.
La Cache-Control configurada controla la frescura descendente, no la eliminación del archivo de origen.
Información para escalar
Al solicitar soporte, proporciona evidencia no confidencial:
- versiones de WordPress y POM Cache;
- sitio único o multisitio, y si el sitio afectado está asignado por ruta o por dominio;
- capa de alojamiento: Apache, Nginx, proxy y CDN;
- la forma de la ruta con los identificadores privados eliminados si es necesario;
- los cuatro estados de interruptor de tiempo de ejecución de JSON;
- el tamaño máximo de archivo y la política cache-control;
- las cabeceras de la primera y la segunda respuesta;
- si cambió Progressive JSON Cache Contents;
- si el problema se reproduce en el origen;
- la acción editorial exacta que se espera que invalide la caché.
No incluyas nunca claves de licencia, cookies de autenticación, rutas de servidor privadas ni credenciales.