--- title: Cache-Control slug: Web/HTTP/Headers/Cache-Control tags: - Cache-Control - Encabezado general - HTTP - Referencia - encabezado HTTP translation_of: Web/HTTP/Headers/Cache-Control ---
El encabezado HTTP Cache-Control especifica directivas (instrucciones) para almacenar temporalmente (caching) tanto en peticiones como en respuestas. Una directiva dada en una petición no significa que la misma directiva estar en la respuesta.
| Tipo de encabezado | {{Glossary("General header", "Encabezado general")}} |
|---|---|
| {{Glossary("Forbidden header name", "nombre prohibido del encabezado")}} | no |
| {{Glossary("CORS-safelisted response header", "Respuesta del encabezado CORS-safelisted")}} | yes |
Las directivas para almacenamiento temporal siguen las siguientes reglas para ser válidas:
Las directivas estándar Cache-Control que pueden ser usadas por el cliente en una solicitud HTTP.
Cache-Control: max-age=<seconds> Cache-Control: max-stale[=<seconds>] Cache-Control: min-fresh=<seconds> Cache-Control: no-cache Cache-Control: no-store Cache-Control: no-transform Cache-Control: only-if-cached
Las diretivas estándar Cache-Control que pueden ser usadas por el servidor en una respuesta HTTP.
Cache-Control: must-revalidate Cache-Control: no-cache Cache-Control: no-store Cache-Control: no-transform Cache-Control: public Cache-Control: private Cache-Control: proxy-revalidate Cache-Control: max-age=<seconds> Cache-Control: s-maxage=<seconds>
Las directivas de extensión Cache-Control no forman parte de la base del documento estandar para cacheo HTTP. Revisé la tabla de compatibilidad para ver su soporte, los agentes de usuario que no reconocen estas directivas las ignorarán.
Cache-Control: immutable Cache-Control: stale-while-revalidate=<seconds> Cache-Control: stale-if-error=<seconds>
publicprivateno-store. Esta directiva no es efectiva previniendo el cacheo al almacenar respuestas.no-cacheno-cache en conjunción con immutable. Si no desea almacenar la respuesta en algún cache, se debe utilizar no-store en su lugar. Esta directiva no es efectiva para prevenir el cacheo al guardar la respuesta.no-storemax-age=0 es implícito. Configurando must-revalidate no tiene sentido porque en orden para revalidar se necesita que la respuesta este almacenada en la cache, lo cual no-store previene.pre-check=0,post-check=0 si lo ve en línea porque es completamente ignorado, confirmado por el tweet de un desarrollador de Edge.no-store
no-cache,no-store,must-revalidate,pre-check=0,post-check=0
max-age=<seconds>Expires, esta directiva es relativa a el tiempo de la petición.s-maxage=<seconds>max-age o el Expires, pero solo para caches compartidos (e.g., proxies). Ignorado por caches privados.max-stale[=<seconds>]min-fresh=<seconds>stale-while-revalidate=<seconds> {{Experimental_Inline}}stale-while-revalidate" para más información.stale-if-error=<seconds> {{Experimental_Inline}}must-revalidateproxy-revalidatemust-revalidate, pero solo para caches compartidos (es decir, proxies). Ignorado por caches privados.immutableIf-None-Match o If-Modified-Since) para revisar por actualizaciones, incluso cuando el usuario explícitamente recarga la página. Los clientes que no son consientes de esta extensión las ignoran deacuerdo a la especificación HTTP. En Firefox, immutable solo es respetada en transacciones https://. Para más información, ver también este árticulo de un blog.no-transformno-transform no permite esto.only-if-cached504. Encabezados condicionales como If-None-Match no deberían ser definidos. No hay efecto si only-if-cached es definido por un servidor como parte de una respuesta.Para desactivar el almacenamiento en caché, puede enviar el siguiente encabezado de respuesta. Además, ver también los encabezados Expires y Pragma.
Cache-Control: no-store
Cache-Control: private,no-cache,no-store,max-age=0,must-revalidate,pre-check=0,post-check=0
Para los archivos de la aplicación que no cambian, generalmente se puede agregar almacenamiento en caché agresivo enviando el encabezado de respuesta a continuación. Esto incluye, por ejemplo, archivos estáticos servidos por la aplicación, como imágenes, archivos CSS y archivos JavaScript. Además, vea también, el encabezado Expires.
Cache-Control: public, max-age=604800, immutable
Especificando no-cache o max-age=0 se indica a los clientes que se puede almacenar temporalmente un recurso y debe revalidarse en cada ocasión antes de utilizarse. Esto significa que las peticiones HTTP ocurren cada vez, pero se pueden saltar la descarga del cuerpo HTTP si el contenido es válido.
Cache-Control: no-cache Cache-Control: no-cache, max-age=0 Cache-Control: no-cache, max-age=0, stale-while-revalidate=300
| Especificaciones | Estado | Comentario |
|---|---|---|
| {{RFC(8246, "HTTP Immutable Responses")}} | IETF RFC | |
| {{RFC(7234, "Hypertext Transfer Protocol (HTTP/1.1): Caching")}} | IETF RFC | |
| {{RFC(5861, "HTTP Cache-Control Extensions for Stale Content")}} | IETF RFC | Definición inicial |
{{Compat("http.headers.Cache-Control")}}
Cache-Control para civiles