Administración de cuánto tiempo se mantiene el contenido en una caché (vencimiento) - Amazon CloudFront

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Administración de cuánto tiempo se mantiene el contenido en una caché (vencimiento)

Puedes controlar cuánto tiempo permanecen tus archivos en la CloudFront memoria caché antes de CloudFront reenviar otra solicitud a tu 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.

Por lo general, CloudFront sirve un archivo desde una ubicación perimetral hasta que pase el tiempo de almacenamiento en caché que especificó, es decir, hasta que el archivo caduque. Cuando caduque, la próxima vez que la ubicación perimetral reciba una solicitud para el archivo, la CloudFront reenviará al 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 CloudFront caché ya tiene la última versión, el origen devuelve un código 304 Not Modified de estado.

  • Si la CloudFront caché no tiene la última versión, el origen devuelve un código de estado 200 OK y la última versión del archivo.

Si no se solicita con frecuencia un archivo en una ubicación perimetral, es CloudFront posible que lo desalojen (lo eliminen antes de su fecha de caducidad) para dejar espacio a los 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 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 Especificar la cantidad de tiempo que CloudFront se almacenan en caché los objetos.

También puedes controlar cuánto tiempo permanecen los errores (por ejemplo404 Not Found) en la CloudFront caché antes de volver a CloudFront intentar obtener el objeto solicitado reenviando otra solicitud a tu origen. Para obtener más información, consulte ¿Cómo CloudFront procesa y almacena en caché los códigos de estado HTTP 4xx y 5xx de tu origen?.

Utilizar 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 Cache-Control max-age directiva te permite especificar cuánto tiempo (en segundos) quieres que un objeto permanezca en la caché antes CloudFront de volver a obtenerlo del servidor de origen. El tiempo de caducidad mínimo CloudFront admitido 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 directiva indica CloudFront que hay que mantener el objeto asociado en la memoria caché durante 3600 segundos (una hora):

    Cache-Control: max-age=3600

    Si quieres que los objetos permanezcan en las cachés CloudFront perimetrales durante un tiempo diferente al que permanecen en las cachés del navegador, puedes usar las directivas Cache-Control max-age y Cache-Control s-maxage juntas. Para obtener más información, consulte Especificar la cantidad de tiempo que CloudFront se almacenan en caché los objetos.

  • 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 tanto para Cache-Control max-age como para Expires, CloudFront utilizará únicamente el valor de Cache-Control max-age.

Para obtener más información, consulte Especificar la cantidad de tiempo que CloudFront se almacenan en caché los objetos.

No puedes usar los campos HTTP Cache-Control o de Pragma encabezado en una GET solicitud de un espectador CloudFront para forzar el retorno del objeto al servidor de origen. CloudFront ignora esos campos de encabezado en las solicitudes de los espectadores.

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 Stale-While-Revalidate y Stale-If-Error caché.

  • La stale-while-revalidate directiva CloudFront permite servir contenido obsoleto de la memoria caché mientras busca de forma asíncrona una versión nueva desde el origen. Esto mejora la latencia, ya que los usuarios reciben respuestas inmediatamente desde CloudFront las ubicaciones periféricas sin tener que esperar a que se recupere en segundo plano y se carga contenido nuevo en segundo plano para futuras solicitudes.

    En el siguiente ejemplo, guarda en CloudFront caché la respuesta durante una hora ()max-age=3600. Si se realiza una solicitud después de este período, entrega el CloudFront 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
  • La stale-if-error directiva permite CloudFront publicar contenido obsoleto desde la memoria caché si no se puede acceder al origen o devuelve un código de error comprendido entre 500 y 600. Esto garantiza que los espectadores puedan acceder al contenido incluso durante una interrupción del origen.

    En el siguiente ejemplo, guarda en CloudFront caché la respuesta durante una hora (). max-age=3600 Si el origen está inactivo o devuelve un error después de este período, CloudFront seguirá publicando el contenido obsoleto durante un máximo de 24 horas ()stale-if-error=86400.

    Cache-Control: max-age=3600, stale-if-error=86400
    nota

    Cuando se configuran ambas respuestas de error stale-if-error y las personalizadas, CloudFront primero intenta servir el contenido obsoleto si se produce un error dentro del período especificadostale-if-error. Si el contenido obsoleto no está disponible o ha superado su stale-if-error duración, CloudFront se muestran las respuestas de error personalizadas configuradas para el código de estado de error correspondiente.

Uso de ambos juntos

stale-while-revalidate y stale-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, guarda en CloudFront caché la respuesta durante una hora ()max-age=3600. Si se realiza una solicitud después de este período, CloudFront sirve el contenido obsoleto durante un máximo de 10 minutos (stale-while-revalidate=600) mientras se revalida el contenido. Si el servidor de origen devuelve un error al CloudFront intentar revalidar el contenido, CloudFront seguirá publicando 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.

Especificar la cantidad de tiempo que CloudFront se almacenan en caché los objetos

Para controlar el tiempo que se CloudFront mantiene un objeto en la caché antes de enviar otra solicitud al origen, puedes:

  • Defina los valores TTL mínimo, máximo y predeterminado en el comportamiento de la caché de una CloudFront distribución. 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 o Expires en las respuestas del origen. Estos encabezados también ayudan a determinar cuánto tiempo un navegador mantiene un objeto en la memoria caché del navegador antes de enviar otra solicitud. 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 Cache-Control: max-age al objeto

CloudFront almacenamiento en caché

CloudFront almacena en caché el objeto para el valor menor entre el valor de la Cache-Control: max-age directiva o el valor del TTL CloudFront máximo.

Almacenamiento en caché de navegadores

Los navegadores almacenan en caché el objeto para el valor de la directiva Cache-Control: max-age.

CloudFront almacenamiento en caché

CloudFront el almacenamiento en caché depende de los valores del TTL CloudFront mínimo y el TTL máximo y de la directiva: Cache-Control max-age

  • Si el TTL mínimo < max-age < TTL máximo, se guarda en CloudFront caché el objeto para el valor de la directiva. Cache-Control: max-age

  • Si es max-age < el TTL mínimo, se guarda en CloudFront caché el objeto para el valor del TTL mínimo. CloudFront

  • Si es max-age > TTL máximo, almacena en CloudFront caché el objeto para el valor del TTL máximo. CloudFront

Almacenamiento en caché de navegadores

Los navegadores almacenan en caché el objeto para el valor de la directiva Cache-Control: max-age.

El origen no agrega una directiva Cache-Control: max-age al objeto

CloudFront almacenamiento en caché

CloudFront guarda en caché el objeto para el valor del TTL CloudFront predeterminado.

Almacenamiento en caché de navegadores

Depende del navegador.

CloudFront almacenamiento en caché

CloudFront guarda en caché el objeto para el valor del TTL CloudFront mínimo o del TTL predeterminado, que sea mayor.

Almacenamiento en caché de navegadores

Depende del navegador.

El origen agrega directivas Cache-Control: max-age y Cache-Control: s-maxage al objeto

CloudFront almacenamiento en caché

CloudFront almacena en caché el objeto para el valor menor entre el valor de la Cache-Control: s-maxage directiva o el valor del TTL CloudFront máximo.

Almacenamiento en caché de navegadores

Los navegadores almacenan en caché el objeto para el valor de la directiva Cache-Control max-age.

CloudFront almacenamiento en caché

CloudFront el almacenamiento en caché depende de los valores del TTL CloudFront mínimo y el TTL máximo y de la directiva: Cache-Control: s-maxage

  • Si el TTL mínimo < s-maxage < TTL máximo, se guarda en CloudFront caché el objeto para el valor de la directiva. Cache-Control: s-maxage

  • Si es s-maxage < el TTL mínimo, se guarda en CloudFront caché el objeto para el valor del TTL mínimo. CloudFront

  • Si es s-maxage > TTL máximo, almacena en CloudFront caché el objeto para el valor del TTL máximo. CloudFront

Almacenamiento en caché de navegadores

Los navegadores almacenan en caché el objeto para el valor de la directiva Cache-Control: max-age.

El origen añade un encabezado Expires al objeto

CloudFront almacenamiento en caché

CloudFront almacena en caché el objeto hasta la fecha del Expires encabezado o hasta el valor del TTL CloudFront máximo, lo que ocurra primero.

Almacenamiento en caché de navegadores

Los navegadores almacenan el objeto en la caché hasta la fecha del encabezado Expires.

CloudFront almacenamiento en caché

CloudFront el almacenamiento en caché depende de los valores del TTL CloudFront mínimo y máximo y del encabezado: Expires

  • Si el TTL mínimo es < Expires < el TTL máximo, el objeto se guarda en CloudFront caché hasta la fecha y la hora indicadas en el encabezado. Expires

  • Si es Expires < TTL mínimo, guarda en CloudFront caché el objeto para el valor del TTL mínimo. CloudFront

  • Si es Expires > TTL máximo, almacena en CloudFront caché el objeto para el valor del TTL máximo. CloudFront

Almacenamiento en caché de navegadores

Los navegadores almacenan el objeto en la caché hasta la fecha y hora del encabezado Expires.

El origen agrega directivas Cache-Control: no-cache, no-store o private al objeto

CloudFront y los navegadores respetan los encabezados.

CloudFront almacenamiento en caché

CloudFront guarda en caché el objeto por el valor del TTL CloudFront mínimo. Consulte la advertencia debajo de esta tabla.

Almacenamiento en caché de navegadores

Los navegadores respetan los encabezados.

aviso

Si CloudFront obtiene un objeto del origen que incluye las private directivas, y/o y Cache-Control: no-cacheno-store, posteriormente, CloudFront recibe otra solicitud del espectador sobre el mismo objeto, CloudFront intenta ponerse en contacto con el origen para cumplir con la solicitud del espectador.

Si se puede acceder al origen, CloudFront obtiene el objeto del origen y se lo devuelve al espectador.

Si el origen es inalcanzable y el valor mínimo o máximo de TTL es superior a 0, CloudFront servirá al 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 provoca CloudFront que se devuelva un error en respuesta a futuras solicitudes si el origen es inalcanzable, en lugar de devolver el objeto que obtuvo del origen anteriormente.

Para obtener información sobre cómo cambiar la configuración de las distribuciones mediante la CloudFront consola, consulte. Actualización de una distribución Para obtener información sobre cómo cambiar la configuración de las distribuciones mediante la CloudFront API, consulte. UpdateDistribution

Agregar 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
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En la lista de buckets, elija el nombre del bucket que contenga los archivos a los que agregará encabezados.

  3. 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.

  4. Elija Actions (Acciones) y luego Edit metadata (Editar metadatos).

  5. En el panel Add metadata (Agregar metadatos), haga lo siguiente:

    1. Elija Add metadata (Agregar metadatos).

    2. En Type (Tipo), elija System defined (Definido por el sistema).

    3. Para Key (Clave), elija el nombre del encabezado que agregará (Cache-Control o Expires).

    4. En Value (Valor), introduzca un valor de encabezado. Por ejemplo, para un encabezado Cache-Control, introduzca max-age=86400. Para Expires, introduzca una fecha y hora de caducidad tal como Wed, 30 Jun 2021 09:28:00 GMT.

  6. En la parte inferior de la página, elija Edit metadata (Editar metadatos).