search

Found

info Descripción

Construye un encabezado Cache-Control con public/private, max-age, s-maxage y stale-while-revalidate, con diagnóstico de combinaciones contradictorias.

📘 Cómo usar

  1. Selecciona una opción de almacenamiento (public, private, no-cache o no-store)
  2. Introduce las duraciones como max-age y s-maxage en segundos
  3. Revisa la cadena del encabezado generado y la comprobación de conflictos

Generador de encabezado HTTP Cache-Control

Almacenable

Duración

segundos
segundos
segundos
segundos

Revalidación

Transformación y condicional

Encabezado de salida

Cache-Control: private, max-age=3600

Significado: Solo el navegador almacena durante 3600 segundos

Comprobación de conflictos

    ¡Copiado!
    Article

    Generador de encabezado HTTP Cache-Control | Componer directivas con diagnóstico de conflictos

    Construye un encabezado de respuesta Cache-Control con botones de opción y casillas. Elige si la respuesta es public o private, define max-age, s-maxage y stale-while-revalidate en segundos, activa indicadores como must-revalidate o immutable, y la herramienta genera una línea como Cache-Control: private, max-age=3600 junto con una explicación en lenguaje claro. Además detecta cinco combinaciones contradictorias frecuentes, como usar no-store con max-age.

    💡 Sobre esta herramienta

    Configurar Cache-Control en Nginx, Cloudflare o un bucket de almacenamiento parece sencillo hasta que aparece la pregunta clave: ¿esta línea hace realmente lo que creo? Los nombres de las directivas se memorizan rápido, pero el comportamiento conjunto es donde se esconden los errores. no-cache y no-store se parecen mucho y, sin embargo, actúan al revés; saber cuál tiene prioridad cuando también defines max-age suele obligar a volver a la documentación.

    Para quien está aprendiendo cómo funciona el almacenamiento en caché HTTP, esta herramienta sirve como banco de pruebas. No solo arma el encabezado: también señala las combinaciones que se anulan entre sí. Si eliges no-store y escribes un max-age, te avisa de que no-store prevalece y nada se almacena. Si marcas immutable con max-age en cero, indica que el indicador no surte efecto. Así puedes entender la teoría ajustando valores y observando el resultado.

    🧐 Preguntas Frecuentes

    Q. ¿Cuál es la diferencia entre no-cache y no-store? no-cache sí almacena la respuesta, pero debe revalidarla con el origen antes de reutilizarla. no-store prohíbe almacenarla por completo. Usa no-store para datos sensibles que nunca deben escribirse en caché y no-cache cuando quieres garantizar frescura permitiendo reutilización condicional.

    Q. ¿Cuándo conviene s-maxage en lugar de max-age? max-age se aplica a todas las cachés, incluido el navegador. s-maxage se aplica solo a las cachés compartidas como CDN y proxies, y allí tiene prioridad sobre max-age. Un patrón habitual es un max-age corto para navegadores y un s-maxage más largo para que la CDN absorba más tráfico.

    Q. ¿Qué pasa con mi CDN si elijo private? private indica que la respuesta solo puede guardarse en una caché privada como el navegador; las CDN y proxies no conservan copia. Es adecuado para páginas que cambian según el usuario. Elige public cuando sí quieras que las cachés compartidas almacenen la respuesta.

    Q. ¿Hay un límite máximo de segundos? max-age, s-maxage, stale-while-revalidate y stale-if-error aceptan enteros de 0 a 31536000 segundos (un año). Cualquier valor mayor se ajusta a 31536000.

    Q. ¿Para qué sirve immutable? immutable le indica al navegador que el archivo no cambiará durante su periodo de frescura, de modo que puede omitir la petición condicional de revalidación al recargar. Combina bien con nombres de archivo con hash y un max-age largo, donde la URL cambia cada vez que cambia el contenido.

    📚 Cómo funciona la caché HTTP

    Conviene entender la cadena de decisión que sigue una caché. Primero comprueba si la respuesta puede almacenarse (public, private, no-store); después calcula si sigue fresca usando max-age o s-maxage; y solo si ha caducado realiza la revalidación con el origen mediante un ETag o la fecha de última modificación. Ver las directivas como pasos de ese flujo, y no como interruptores aislados, ayuda a elegir la combinación correcta.

    El encabezado Cache-Control se introdujo en HTTP/1.1 y hoy está descrito en el RFC 9111. Antes, HTTP/1.0 usaba el encabezado Expires con una fecha absoluta, lo que fallaba cuando el reloj del servidor y el del cliente no coincidían. El uso de segundos relativos con max-age resolvió ese problema y es la base sobre la que se construyen las estrategias modernas de almacenamiento en caché.