Administración de cuánto tiempo se mantiene el contenido en una caché (vencimiento)
Puede controlar cuánto tiempo se mantienen los archivos en una caché de CloudFront antes de que CloudFront reenvíe otra solicitud al origen. Reducir la duración le permite ofrecer contenido dinámico. Aumentar la duración implica que sus usuarios podrán disfrutar de un mejor rendimiento ya que es más probable que sus archivos se ofrezcan directamente desde la caché perimetral. Una mayor duración también reduce la carga en el origen.
Normalmente, CloudFront ofrece un archivo desde una ubicación periférica durante el tiempo de almacenamiento en caché especificado por usted, es decir, hasta que el archivo venza. Después de que venza, la próxima vez que la ubicación periférica reciba una solicitud de un archivo, CloudFront reenviará la solicitud al servidor de origen para comprobar que la caché contiene la versión más reciente del archivo. La respuesta del origen depende de si el archivo ha cambiado:
-
Si la caché de CloudFront ya tiene la versión más reciente, el origen devuelve un código de estado
304 Not Modified
. -
Si la caché de CloudFront no tiene la versión más reciente, el origen devuelve un código de estado
200 OK
y la versión más reciente del archivo.
Si un archivo de una ubicación periférica no se solicita con frecuencia, es posible que CloudFront lo desaloje (lo elimine antes de su fecha de vencimiento) con el fin de dejar espacio para otros archivos que se hayan solicitado más recientemente.
De forma predeterminada, cada archivo caduca automáticamente después de 24 horas, pero puede cambiar el comportamiento predeterminado de dos maneras:
-
Para cambiar la duración del almacenamiento en caché de todos los archivos que coinciden con el mismo patrón de ruta, puede cambiar la configuración de CloudFront para Minimum TTL (TTL mínimo), Maximum TTL (TTL máximo) y Default TTL (TTL predeterminado) de un comportamiento de la caché. Para obtener información sobre los ajustes individuales, consulte Minimum TTL (TTL mínimo), Maximum TTL (TTL máximo) y Default TTL (TTL predeterminado) en Referencia de configuración de la distribución.
-
Para cambiar la duración del almacenamiento en caché de un archivo individual, puede configurar el origen para agregar un encabezado
Cache-Control
con la políticamax-age
os-maxage
, o un campo de encabezadoExpires
en el archivo. Para obtener más información, consulte Uso de encabezados para controlar la duración del almacenamiento en caché de objetos individuales.
Para obtener más información acerca de cómo Minimum TTL (TTL mínimo), Default TTL (TTL predeterminado) y Maximum TTL (TTL máximo) interactúan con las políticas max-age
y s-maxage
y con el campo de encabezado Expires
, consulte Especificación de cuánto tiempo CloudFront almacena objetos en caché.
También puede controlar durante cuánto tiempo los errores (como 404 Not Found
) permanecen en una caché de CloudFront antes de que CloudFront intente obtener de nuevo el objeto solicitado reenviando otra solicitud al origen. Para obtener más información, consulte Procesamiento de CloudFront de los códigos de estado HTTP 4xx y 5xx desde el origen.
Temas
Uso de encabezados para controlar la duración del almacenamiento en caché de objetos individuales
Puede utilizar los encabezados Cache-Control
y Expires
para controlar durante cuánto tiempo permanecen los objetos en la caché. La configuración de Minimum TTL (Tiempo de vida mínimo), Default TTL (Tiempo de vida predeterminado) y Maximum TTL (Tiempo de vida máximo) también afecta la duración del almacenamiento en caché, pero a continuación encontrará información general acerca de cómo los encabezados pueden influir en la duración de la caché:
-
La política
Cache-Control max-age
le permite especificar durante cuánto tiempo (en segundos) desea que un objeto permanezca en la caché antes de que CloudFront obtenga el objeto de nuevo del servidor de origen. El tiempo mínimo de caducidad compatible con CloudFront es de 0 segundos. El valor máximo es 100 años. Especifique el valor en el siguiente formato:Cache-Control: max-age=
segundos
Por ejemplo, la siguiente política indica a CloudFront que debe mantener el objeto asociado en la caché durante 3600 segundos (una hora):
Cache-Control: max-age=3600
Si desea que los objetos permanezcan en las cachés de borde de CloudFront por un tiempo distinto del que permanecen en las cachés de navegadores, puede utilizar las políticas
Cache-Control max-age
yCache-Control s-maxage
de forma conjunta. Para obtener más información, consulte Especificación de cuánto tiempo CloudFront almacena objetos en caché. -
El campo del encabezado
Expires
le permite especificar una fecha y hora de vencimiento con el formato indicado en RFC 2616, Hypertext Transfer Protocol -- HTTP/1.1 Section 3.3.1, Full Date, por ejemplo: Sat, 27 Jun 2015 23:59:59 GMT
Le recomendamos que utilice la directiva Cache-Control max-age
en lugar del campo de encabezado Expires
para controlar el almacenamiento de objetos en caché. Si especifica valores para Cache-Control max-age
y para Expires
, CloudFront utiliza solo el valor de Cache-Control max-age
.
Para obtener más información, consulte Especificación de cuánto tiempo CloudFront almacena objetos en caché.
No puede utilizar los campos de encabezado HTTP Cache-Control
ni Pragma
en una solicitud GET
de un lector para obligar a CloudFront a volver al servidor de origen para obtener el objeto. CloudFront ignora los campos de encabezado de las solicitudes de los lectores.
Para obtener más información acerca de los campos de encabezado Cache-Control
y Expires
, visite las siguientes secciones de RFC 2616, Hypertext Transfer Protocol -- HTTP/1.1:
Distribución de contenido obsoleto (caducado)
CloudFront admite las directivas de control de la caché Stale-While-Revalidate
y Stale-If-Error
.
-
La directiva
stale-while-revalidate
permite a CloudFront distribuir contenido obsoleto desde la caché mientras obtiene de forma asíncrona una versión nueva del origen. Esto mejora la latencia, ya que los usuarios reciben respuestas inmediatamente desde las ubicaciones periféricas de CloudFront sin tener que esperar a que se recupere en segundo plano y se carga contenido nuevo en segundo plano para solicitudes futuras.En el siguiente ejemplo, CloudFront almacena en caché la respuesta durante una hora (
max-age=3600
). Si se realiza una solicitud después de este periodo, CloudFront distribuye el contenido obsoleto y, al mismo tiempo, envía una solicitud al origen para revalidar y actualizar el contenido almacenado en caché. El contenido obsoleto se ofrece durante un máximo de 10 minutos (stale-while-revalidate=600
) mientras se vuelve a validar el contenido.Cache-Control: max-age=3600, stale-while-revalidate=600
nota
CloudFront servirá el contenido obsoleto hasta el valor de la directiva
stale-while-revalidate
o el valor del TTL máximo de CloudFront, el valor que sea menor. -
La directiva
stale-if-error
permite a CloudFront distribuir contenido obsoleto desde la memoria caché si no se puede acceder al origen o devuelve el código de error que está entre 500 y 600. Esto garantiza que los espectadores puedan acceder al contenido incluso durante una interrupción del origen.En el siguiente ejemplo, CloudFront almacena en caché la respuesta durante una hora (
max-age=3600
). Si el origen no funciona o devuelve un error después de este periodo, CloudFront seguirá distribuyendo el contenido obsoleto durante un máximo de 24 horas (stale-if-error=86400
).Cache-Control: max-age=3600, stale-if-error=86400
nota
CloudFront servirá el contenido obsoleto hasta el valor de la directiva
stale-if-error
o el valor del TTL máximo de CloudFront, el valor que sea menor.Cuando se configuran
stale-if-error
y las respuestas de error personalizadas, CloudFront primero intenta distribuir el contenido obsoleto si se encuentra un error dentro de la duración destale-if-error
especificada. Si el contenido obsoleto no está disponible o el contenido ha superado la duración destale-if-error
, CloudFront distribuye las respuestas de error personalizadas configuradas para el código de estado del error correspondiente.
- Uso de ambos juntos
-
stale-while-revalidate
ystale-if-error
son directivas de control de caché independientes que se pueden usar juntas para reducir la latencia y agregar un búfer para que el origen responda o se recupere.En el siguiente ejemplo, CloudFront almacena en caché la respuesta durante una hora (
max-age=3600
). Si se realiza una solicitud después de este periodo, CloudFront distribuye el contenido obsoleto durante un máximo de 10 minutos (stale-while-revalidate=600
) mientras se vuelve a validar el contenido. Si el servidor de origen devuelve un error mientras CloudFront intenta revalidar el contenido, CloudFront seguirá distribuyendo el contenido obsoleto durante un máximo de 24 horas (stale-if-error=86400
).Cache-Control: max-age=3600, stale-while-revalidate=600, stale-if-error=86400
sugerencia
El almacenamiento en caché es un equilibrio entre rendimiento y actualización. El uso de directivas como stale-while-revalidate
y stale-if-error
puede mejorar el rendimiento y la experiencia del usuario, pero asegúrese de que las configuraciones se ajusten a la actualización que desea que tenga el contenido. Las directivas de contenido obsoletas son las más adecuadas para casos de uso en los que es necesario actualizar el contenido, pero no es esencial tener la versión más reciente. Además, si el contenido no cambia o cambia con poca frecuencia, stale-while-revalidate
podría agregar solicitudes de red innecesarias. En su lugar, considere establecer una duración de caché larga.
Especificación de cuánto tiempo CloudFront almacena objetos en caché
Para controlar la cantidad de tiempo que CloudFront mantiene un objeto en la caché antes de enviar otra solicitud al origen, puede:
-
Establecer los valores TTL mínimo, máximo y predeterminado en el comportamiento de la caché de una distribución de CloudFront. Puede establecer estos valores en una política de caché adjunta al comportamiento de caché (recomendado) o en la configuración de caché heredada.
-
Incluya el encabezado
Cache-Control
oExpires
en las respuestas del origen. Estos encabezados también ayudan a determinar cuánto tiempo un explorador mantiene un objeto en la caché del explorador antes de enviar otra solicitud a CloudFront.
En la tabla siguiente se explica cómo los encabezados Cache-Control
y Expires
enviados desde el origen funcionan junto con la configuración TTL en un comportamiento de caché para afectar al almacenamiento en caché.
Encabezados de origen | Tiempo de vida mínimo = 0 | Tiempo de vida mínimo > 0 |
---|---|---|
El origen agrega una directiva de |
Almacenamiento en caché de CloudFront CloudFront almacena en caché el objeto para el menor valor de la directiva Almacenamiento en caché de navegadores Los navegadores almacenan en caché el objeto para el valor de la directiva |
Almacenamiento en caché de CloudFront El almacenamiento en caché de CloudFront depende de los valores del TTL mínimo y TTL máximo de CloudFront y de la directiva
Almacenamiento en caché de navegadores Los navegadores almacenan en caché el objeto para el valor de la directiva |
El origen no agrega una directiva |
Almacenamiento en caché de CloudFront CloudFront almacena en caché el objeto para el valor del TTL predeterminado de CloudFront. Almacenamiento en caché de navegadores Depende del navegador. |
Almacenamiento en caché de CloudFront CloudFront almacena en caché el objeto para el mayor valor del TTL mínimo de CloudFront o TTL predeterminado. Almacenamiento en caché de navegadores Depende del navegador. |
El origen agrega directivas |
Almacenamiento en caché de CloudFront CloudFront almacena en caché el objeto para el menor valor de la directiva Almacenamiento en caché de navegadores Los navegadores almacenan en caché el objeto para el valor de la directiva |
Almacenamiento en caché de CloudFront El almacenamiento en caché de CloudFront depende de los valores del TTL mínimo y TTL máximo de CloudFront y de la directiva
Almacenamiento en caché de navegadores Los navegadores almacenan en caché el objeto para el valor de la directiva |
El origen añade un encabezado |
Almacenamiento en caché de CloudFront CloudFront almacena en caché el objeto hasta la fecha del encabezado Almacenamiento en caché de navegadores Los navegadores almacenan el objeto en la caché hasta la fecha del encabezado |
Almacenamiento en caché de CloudFront El almacenamiento en caché de CloudFront depende de los valores de los TTL mínimo y máximo de CloudFront y del encabezado
Almacenamiento en caché de navegadores Los navegadores almacenan el objeto en la caché hasta la fecha y hora del encabezado |
El origen agrega directivas |
CloudFront y los navegadores respetan los encabezados. |
Almacenamiento en caché de CloudFront CloudFront almacena en caché el objeto para el valor del TTL mínimo de CloudFront. Consulte la advertencia debajo de esta tabla. Almacenamiento en caché de navegadores Los navegadores respetan los encabezados. |
aviso
Si el TTL mínimo es superior a 0, CloudFront utiliza el TTL mínimo de la política de caché, aunque las directivas Cache-Control: no-cache
, no-store
o private
estén presentes en los encabezados de origen.
Si se puede acceder al origen, CloudFront obtiene el objeto del origen y lo devuelve al lector.
Si no se puede acceder al origen o el TTL máximo es mayor que 0, CloudFront servirá el objeto que obtuvo del origen anteriormente.
Para evitar este comportamiento, incluya la directiva Cache-Control:
stale-if-error=0
con el objeto devuelto desde el origen. Esto hace que CloudFront devuelva un error en respuesta a solicitudes futuras si el origen es inalcanzable, en lugar de devolver el objeto que obtuvo del origen anteriormente.
Para obtener información acerca de cómo cambiar la configuración de distribuciones mediante la consola de CloudFront, consulte Actualizar una distribución. Para obtener información sobre cómo cambiar la configuración de las distribuciones con la API de Cloudfront; consulte UpdateDistribution.
Añadido de encabezados a los objetos con la consola de Amazon S3
Para agregar un campo de encabezado Cache-Control
o Expires
a objetos de Amazon S3 mediante la consola de Amazon S3
Inicie sesión en la AWS Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/
. -
En la lista de buckets, elija el nombre del bucket que contenga los archivos a los que agregará encabezados.
-
Active la casilla de verificación situada junto al nombre del archivo o la carpeta a la que agregará encabezados. Cuando agrega encabezados a una carpeta, afecta a todos los archivos dentro de esa carpeta.
-
Elija Actions (Acciones) y luego Edit metadata (Editar metadatos).
-
En el panel Add metadata (Agregar metadatos), haga lo siguiente:
-
Elija Add metadata (Agregar metadatos).
-
En Type (Tipo), elija System defined (Definido por el sistema).
-
Para Key (Clave), elija el nombre del encabezado que agregará (Cache-Control o Expires).
-
En Value (Valor), introduzca un valor de encabezado. Por ejemplo, para un encabezado
Cache-Control
, introduzcamax-age=86400
. ParaExpires
, introduzca una fecha y hora de caducidad tal comoWed, 30 Jun 2021 09:28:00 GMT
.
-
-
En la parte inferior de la página, elija Edit metadata (Editar metadatos).