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

  1. Guarda la nueva JSON Cache-Control header;
  2. Limpia el estado de pruebas del navegador y del CDN o utiliza una solicitud controlada sin caché;
  3. Solicita un archivo JSON conocido a través de la entrega temprana de PHP;
  4. Inspecciona las cabeceras finales Cache-Control y Vary;
  5. Si la entrega de Apache está habilitada, actualiza su regla copiada y repite;
  6. Solicita a través del CDN e inspecciona las cabeceras de frescura y de estado de caché;
  7. 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.