Esta traducción está incompleta. Por favor, ayuda a traducir este artículo del inglés.

El  Cache-Controlcampo de encabezado general se utiliza para especificar directivas para los mecanismos de almacenamiento en caché tanto en las solicitudes como en las respuestas. Las directivas de caching son unidireccionales, lo que significa que una directiva dada en una solicitud no implica que se dé la misma directiva en la respuesta.

Tipo de encabezado General header
Forbidden header name no
CORS-safelisted response-header si

Sintaxis

Las directivas no distinguen entre mayúsculas y minúsculas y tienen un argumento opcional, que puede usar sintaxis de token y de cadena citada. Las directivas múltiples están separadas por comas.

Directivas de solicitud de caché

Cache-ControlDirectivas estándar que puede usar 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

Directivas de respuesta de caché

Cache-ControlDirectivas estándar que el servidor puede usar 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>

Cache-Control directivas de extensión

Las Cache-Controldirectivas de extensión no forman parte del documento de estándares de almacenamiento en caché HTTP. Asegúrese de verificar la compatibilidad de la tabla .

Cache-Control: immutable 
Cache-Control: stale-while-revalidate=<seconds>
Cache-Control: stale-if-error=<seconds>

Directivas

Cacheabilidad

public
Indica que la respuesta puede ser almacenada en caché por cualquier caché.
private
Indica que la respuesta está destinada a un único usuario y no debe almacenarse en un caché compartido. Un caché privado puede almacenar la respuesta.
no-cache
Obliga a los cachés a enviar la solicitud al servidor de origen para su validación antes de liberar una copia en caché.
only-if-cached
Indica no recuperar datos nuevos. Siendo este el caso, el servidor desea que el cliente obtenga una respuesta solo una vez y luego la caché. A partir de este momento, el cliente debe continuar liberando una copia en caché y evitar contactar al servidor de origen para ver si existe una copia más nueva.

Caducidad

max-age=<seconds>
Especifica la cantidad máxima de tiempo que un recurso se considerará nuevo. Contrariamente a Expires, esta directiva es relativa al momento de la solicitud.
s-maxage=<seconds>
Tiene prioridad sobre  max-ageel Expiresencabezado, pero solo se aplica a los cachés compartidos (p. Ej., Proxies) y es ignorado por un caché privado.
max-stale[=<seconds>]
Indica que el cliente está dispuesto a aceptar una respuesta que ha excedido su tiempo de vencimiento. Opcionalmente, puede asignar un valor en segundos, indicando la hora en que la respuesta no debe vencerse.
min-fresh=<seconds>
Indica que el cliente desea una respuesta que aún estará fresca durante al menos el número especificado de segundos.
stale-while-revalidate=<seconds>
Indica que el cliente está dispuesto a aceptar una respuesta obsoleta mientras verifica de forma asíncrona en segundo plano una nueva. El valor de segundos indica durante cuánto tiempo el cliente está dispuesto a aceptar una respuesta obsoleta.
stale-if-error=<seconds>
Indica que el cliente está dispuesto a aceptar una respuesta obsoleta si falla la comprobación de una nueva. El valor de segundos indica durante cuánto tiempo el cliente está dispuesto a aceptar la respuesta obsoleta después del vencimiento inicial.

Revalidación y recarga

must-revalidate
El caché debe verificar el estado de los recursos obsoletos antes de usarlo y los caducados no deben usarse.
proxy-revalidate
Lo mismo que must-revalidate, pero solo se aplica a los cachés compartidos (por ejemplo, proxies) y es ignorado por un caché privado.
immutable
Indica que el cuerpo de respuesta no cambiará con el tiempo. El recurso, si no está vigente, no se modifica en el servidor y, por lo tanto, el cliente no debe enviar una revalidación condicional (por ejemplo, If-None-MatchIf-Modified-Since) para buscar actualizaciones, incluso cuando el usuario actualiza la página de manera explícita. Los clientes que no conocen esta extensión deben ignorarlos según la especificación HTTP. En Firefox, immutablesolo se respeta en las https://transacciones. Para obtener más información, consulte también esta publicación de blog .

Otros

no-store
El caché no debe almacenar nada sobre la solicitud del cliente o la respuesta del servidor.
no-transform
No se deben hacer transformaciones o conversiones al recurso. Los encabezados Content-Encoding, Content-Range, Content-Type no deben ser modificados por un proxy. Un proxy no transparente podría, por ejemplo, convertir formatos de imagen para ahorrar espacio en la memoria caché o reducir la cantidad de tráfico en un enlace lento. La no-transformdirectiva no permite esto.

Ejemplos

Prevención de almacenamiento en caché

Para desactivar el almacenamiento en caché, puede enviar el siguiente encabezado de respuesta. Además, ver también los encabezados ExpiresPragma.

Cache-Control: no-cache, no-store, must-revalidate

Caché activos estaticos

Para los archivos de la aplicación que no cambian, generalmente 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 Expiresencabezado.

Cache-Control: public, max-age=31536000

Especificaciones

Especificación Título
RFC 7234 Hypertext Transfer Protocol (HTTP/1.1): almacenamiento en caché
RFC 5861 HTTP Cache-Control extensión para contenido obsoleto
RFC 8246 HTTP respuestas inmutables

Compatibilidad del navegador

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidiOS SafariSamsung Internet
Soporte básicoChrome Soporte completo SiEdge Soporte completo SiFirefox Soporte completo SiIE Soporte completo SiOpera Soporte completo SiSafari Soporte completo SiWebView Android Soporte completo SiChrome Android Soporte completo SiEdge Mobile Soporte completo SiFirefox Android Soporte completo SiOpera Android Soporte completo SiSafari iOS Soporte completo SiSamsung Internet Android Soporte completo Si
immutable
Experimental
Chrome Sin soporte NoEdge Soporte completo 15Firefox Soporte completo 49IE Sin soporte NoOpera Sin soporte NoSafari Soporte completo 11WebView Android Sin soporte NoChrome Android Sin soporte NoEdge Mobile Sin soporte NoFirefox Android Sin soporte NoOpera Android Sin soporte NoSafari iOS Soporte completo 11Samsung Internet Android Sin soporte No
stale-while-revalidate
ExperimentalNo estándar
Chrome Sin soporte No
Notas
Sin soporte No
Notas
Notas See Chromium bug 348877.
Edge Sin soporte NoFirefox Sin soporte No
Notas
Sin soporte No
Notas
Notas See Bugzilla bug 995651.
IE Sin soporte NoOpera Sin soporte NoSafari Sin soporte NoWebView Android Sin soporte NoChrome Android Sin soporte NoEdge Mobile Sin soporte NoFirefox Android Sin soporte NoOpera Android Sin soporte NoSafari iOS Sin soporte NoSamsung Internet Android Sin soporte No
stale-if-error
ExperimentalNo estándar
Chrome Sin soporte No
Notas
Sin soporte No
Notas
Notas See Chromium bug 348877.
Edge Sin soporte NoFirefox Sin soporte No
Notas
Sin soporte No
Notas
Notas See Bugzilla bug 995651.
IE Sin soporte NoOpera Sin soporte NoSafari Sin soporte NoWebView Android Sin soporte NoChrome Android Sin soporte NoEdge Mobile Sin soporte NoFirefox Android Sin soporte NoOpera Android Sin soporte NoSafari iOS Sin soporte NoSamsung Internet Android Sin soporte No

Leyenda

Soporte completo  
Soporte completo
Sin soporte  
Sin soporte
Experimental. Esperar que el comportamiento cambie en el futuro.
Experimental. Esperar que el comportamiento cambie en el futuro.
No estandar . Esperar poco soporte entre navegadores.
No estandar . Esperar poco soporte entre navegadores.
Ver notas de implementación.
Ver notas de implementación.

Véase también

Traducción realizada por Ervin A. Santos R.

Etiquetas y colaboradores del documento

Colaboradores en esta página: ervin_santos
Última actualización por: ervin_santos,