Servir archivos de caché JSON de forma anticipada desde PHP
El servicio estático anticipado de PHP es la vía rápida predeterminada para un archivo JSON progresivo existente. Se ejecuta a través del drop-in POM Cache advanced-cache.php antes de que termine la solicitud normal de WordPress.
Es la primera capa de entrega recomendada porque es más rápida que una alternativa de WordPress y, a la vez, sigue estando controlada por los ajustes del plugin.
Activar la capa
- Abre Settings → POM Cache → General.
- Busca Progressive JSON runtime.
- Establece Progressive JSON cache en Enabled.
- Establece PHP early static serving en Enabled.
- Mantén activadas las JSON writes mientras se construye la caché.
- Guarda.
La configuración de WordPress también debe cargar el drop-in de POM Cache. Revisa POM Cache → Advanced → WordPress configuration si no es posible ningún acierto anticipado.
El Caching de HTML estático puede permanecer desactivado. El arranque anticipado comprueba el JSON progresivo de forma independiente antes de decidir si gestiona el HTML.
Solicitudes aptas para el servicio anticipado
POM Cache acepta:
GET;HEAD;- una ruta
/pom-json/...jsonadmitida; - la ruta
/wp-json/pom/v1/progressive-archive/...jsoncompatible; - cualquiera de las dos rutas con un prefijo de estilo de configuración regional reconocido;
- una cadena de consulta vacía.
A continuación comprueba que el archivo existe, es legible, no está vacío y no supera Maximum JSON file size.
La entrega anticipada se omite cuando la solicitud lleva una cookie de sesión privada reconocida, incluidas las cookies de autenticación o contraseña de WordPress y las cookies habituales de sesión/carrito de WooCommerce. También se omite cuando la solicitud se ha marcado con DONOTCACHEPAGE.
Cabeceras devueltas por PHP
Un acierto devuelve el estado 200 con:
Content-Type: application/json; charset=UTF-8
Cache-Control: public, max-age=30, s-maxage=30, must-revalidate
X-POM-Cache: Served static JSON cache from PHP; phase=early
Vary: Accept-Encoding
Content-Length: <file size>
La línea Cache-Control utiliza tu ajuste actual de JSON Cache-Control header; el valor anterior es el predeterminado.
En una solicitud HEAD, se devuelven los mismos metadatos sin leer el cuerpo en la respuesta.
Vary: Accept-Encoding indica a una caché intermedia que las variantes de codificación de contenido pueden diferir. POM Cache en sí no comprime el archivo con Brotli ni Gzip; esa responsabilidad sigue siendo del servidor web o del CDN.
Por qué esta vía es más segura que una asignación directa de archivos
La capa PHP aplica los interruptores maestro e hijo actuales en cada solicitud. También utiliza el tamaño máximo actual y las reglas de omisión. Desactivar PHP early static serving surte efecto sin editar la configuración del servidor.
Por el contrario, una regla de Apache copiada sigue existiendo fuera de WordPress hasta que se elimina. Por tanto, el servicio anticipado de PHP es útil como:
- la implantación inicial en producción;
- una alternativa detrás de la entrega directa de Apache;
- la vía principal en alojamientos donde
.htaccessno se puede cambiar; - una capa de diagnóstico mientras se validan los archivos almacenados y las cabeceras.
Verificar un acierto anticipado
-
Borra la caché JSON progresiva.
-
Solicita un lote progresivo limpio en una ventana de navegación privada.
-
Confirma que Progressive JSON Cache Contents aumenta.
-
Repite la URL exacta sin cadena de consulta.
-
Inspecciona las cabeceras en busca de:
X-POM-Cache: Served static JSON cache from PHP; phase=early -
Envía una solicitud
HEADy confirma que devuelve cabeceras sin cuerpo. -
Repite iniciando sesión y confirma que la cabecera anticipada está ausente.
Si un CDN activo responde a la solicitud, realiza la comprobación contra el origen mediante un método aprobado de omisión del CDN. De lo contrario, podrías estar observando un acierto de borde en lugar de POM Cache.
Aislar un problema
Si el archivo existe pero la cabecera anticipada nunca aparece:
- Asegúrate de que la entrega opcional de Apache no esté ganando ya;
- Verifica que Progressive JSON cache y PHP early static serving estén activados;
- Comprueba el estado del drop-in en WordPress configuration;
- Elimina los parámetros de consulta de la URL de prueba;
- Utiliza una sesión de navegador sin sesión iniciada y con el carrito vacío;
- Compara el tamaño del archivo con Maximum JSON file size;
- Confirma que el JSON es válido y legible por PHP;
- Activa WordPress read fallback y comprueba si el enrutador posterior informa de un acierto.
Un acierto de la alternativa de WordPress sin acierto anticipado suele apuntar al drop-in, a la elegibilidad de la solicitud o a la búsqueda anticipada del archivo, no a la generación del JSON.
Continúa con Usar la alternativa JSON de WordPress para entender esa distinción diagnóstica.