Comprender las cabeceras de respuesta de caché JSON
El ajuste JSON Cache-Control header controla cómo los navegadores y las cachés HTTP compartidas pueden reutilizar una respuesta de archivo progresivo después de recibirla. No decide cuánto tiempo conserva POM Cache en disco el archivo .json.
Política predeterminada
Abre Settings → POM Cache → General → Progressive JSON runtime. El valor predeterminado es:
public, max-age=30, s-maxage=30, must-revalidate
Sus directivas significan:
| Directiva | Efecto |
|---|---|
public |
La respuesta puede ser almacenada por un navegador o una caché compartida cuando sus demás reglas lo permitan |
max-age=30 |
Un navegador puede reutilizar la respuesta como fresca durante 30 segundos |
s-maxage=30 |
Una caché compartida, como un CDN compatible, puede tratarla como fresca durante 30 segundos |
must-revalidate |
Una vez obsoleta, la caché debe validar o volver a obtenerla en lugar de servir contenido obsoleto libremente |
El predeterminado corto limita la obsolescencia en cascada mientras sigue absorbiendo ráfagas de solicitudes de archivo idénticas.
Qué rutas utilizan el ajuste
La entrega estática temprana de PHP lee el ajuste actual en cada solicitud y lo envía directamente.
El bloque Apache recomendado inserta el valor en el texto generado:
Header set Cache-Control "..." env=POM_JSON_CACHE
Después de copiar ese bloque en .htaccess o en una configuración de host virtual, se convierte en texto independiente. Guardar un valor nuevo en WordPress no edita la configuración de Apache instalada. Vuelve a copiar o actualiza el bloque del servidor y valídalo.
La respuesta generada por WordPress puede verse afectada por el tema, la API REST, el servidor u otra capa de caché. Inspecciona la respuesta final en lugar de asumir que cada ruta de entrega heredó la misma cabecera.
Frescura HTTP frente a vida útil del archivo de origen
Son relojes independientes:
Cache-Control freshness
→ how long a browser/CDN may reuse its copy
POM Cache file lifetime
→ until an automatic or manual origin purge removes it
Establecer max-age=0 no elimina el archivo de origen. Establecer un día no hace que POM Cache elimine el archivo después de un día. POM Cache no tiene expiración de JSON basada en antigüedad.
Cuando cambie el contenido, limpia el JSON de origen mediante una invalidación habilitada o la herramienta manual. Si un CDN ya conserva la respuesta antigua, sigue también el plan de invalidación o revalidación del CDN.
Elige una política
Mantén el valor predeterminado mientras validas el sitio. Cámbialo solo con un modelo de frescura claro.
Ejemplos:
Frescura corta para navegador y compartida:
public, max-age=30, s-maxage=30, must-revalidate
Sin reutilización fresca sin revalidación:
public, max-age=0, s-maxage=0, must-revalidate
Ventanas diferentes para navegador y CDN:
public, max-age=30, s-maxage=300, must-revalidate
El último ejemplo permite que una caché compartida compatible reutilice la respuesta durante más tiempo que un navegador. Úsalo solo cuando tu proceso de invalidación cubra las rutas JSON públicas y la frescura de tu contenido permita hasta esa ventana de borde.
Evita private para una respuesta que esperes que comparta un CDN. Evita una política larga de immutable para lotes de archivo cuyas entradas, términos, precios o traducciones puedan cambiar en una URL estable.
Seguridad de entrada
POM Cache elimina saltos de línea y comillas dobles y normaliza los espacios en blanco antes de que PHP envíe este ajuste. Un resultado vacío recurre a la política predeterminada.
Esta validación evita líneas de cabecera mal formadas, pero no decide si una combinación de directivas personalizada es adecuada para tu CDN. Confirma la sintaxis y el comportamiento con el proveedor de caché correspondiente.
La compresión es una cuestión aparte
La entrega temprana de PHP también envía:
Vary: Accept-Encoding
Eso permite variantes codificadas separadas en cascada. POM Cache no crea archivos JSON Brotli ni Gzip; el servidor web o el CDN pueden comprimir la respuesta en tránsito. Lee Configure Brotli at CloudFront para ese límite.
Verificar un cambio
- Guarda la nueva JSON Cache-Control header;
- Limpia el estado de pruebas del navegador y del CDN o utiliza una solicitud controlada sin caché;
- Solicita un archivo JSON conocido a través de la entrega temprana de PHP;
- Inspecciona las cabeceras finales
Cache-ControlyVary; - Si la entrega de Apache está habilitada, actualiza su regla copiada y repite;
- Solicita a través del CDN e inspecciona las cabeceras de frescura y de estado de caché;
- Cambia el contenido de origen, limpia el JSON de origen y verifica que el borde público no conserve contenido obsoleto inaceptable.
No utilices un parámetro de consulta para invalidar la caché al probar la entrega estática de POM Cache: las solicitudes JSON con una cadena de consulta omiten intencionadamente la ruta del archivo estático. Utiliza en su lugar el método de omisión o diagnóstico aprobado por el CDN.