Amazon CloudFront
Guía del desarrollador (Versión de API 2016-09-29)

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

Es posible controlar durante cuánto tiempo mantener 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 de borde durante el tiempo de almacenamiento en caché especificado por usted; es decir, hasta que el archivo caduque. Después de caducar, la próxima vez que la ubicación de borde reciba una solicitud de un archivo por parte de un usuario, CloudFront reenviará la solicitud al servidor de origen para comprobar que la caché contiene la última versión del archivo. La respuesta del origen depende de si el archivo ha cambiado:

  • Si la caché de CloudFront ya tiene la última versión, el origen devuelve un código de estado 304 (No modificado).

  • 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 de borde no se solicita con frecuencia, CloudFront podría desalojarlo (eliminarlo 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 obtener más información acerca de cómo Minimum TTL (Tiempo de vida mínimo), Default TTL (Tiempo de vida predeterminado) y Maximum TTL (Tiempo de vida máximo) interactúan con las directivas Cache-Control max-age y Cache-Control s-maxage y con el campo de encabezado Expires, consulte Especificar durante cuánto tiempo CloudFront almacena en caché objetos para distribuciones web.

También puede controlar durante cuánto tiempo los errores (como "404, No encontrado") 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 Cómo CloudFront procesa y almacena en caché los códigos de estado HTTP 4xx y 5xx desde el 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 directiva 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 de vencimiento mínimo admitido por CloudFront es de 0 segundos para distribuciones web y 3600 segundos para distribuciones con RTMP. 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 le indica a CloudFront mantener el objeto asociado en la caché durante 3 600 segundos (una hora):

    Cache-Control: max-age=3600

    Si desea que los objetos permanezcan en las cachés perimetrales de CloudFront durante un tiempo distinto del que permanecen en las cachés de navegadores, puede utilizar las directivas Cache-Control max-age y Cache-Control s-maxage de forma conjunta. Para obtener más información, consulte Especificar durante cuánto tiempo CloudFront almacena en caché objetos para distribuciones web.

  • 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 durante cuánto tiempo CloudFront almacena en caché objetos para distribuciones web.

No es posible utilizar los campos de encabezado HTTP Cache-Control ni Pragma en una solicitud GET de un espectador para obligar a que CloudFront vuelva al servidor de origen para obtener el objeto. CloudFront pasa por alto los campos de encabezado de las solicitudes de espectador.

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:

Para ver un ejemplo de cómo añadir campos de encabezado Cache-Control y Expires utilizando AWS SDK para PHP, consulte la sección relativa a la Carga de un objeto mediante AWS SDK para PHP en la Guía para desarrolladores de Amazon Simple Storage Service. También hay herramientas de terceros que pueden añadir estos campos.

Especificar durante cuánto tiempo CloudFront almacena en caché objetos para distribuciones web

En el caso de las distribuciones web, puede utilizar encabezados Cache-Control o Expires y valores de TTL mínimo, máximo y predeterminado de CloudFront para controlar durante cuántos segundos CloudFront mantiene un objeto en la caché antes de reenviar otra solicitud al origen. Los valores de los encabezados también determinan durante cuánto tiempo un navegador mantiene un objeto en la caché antes reenviar otra solicitud a CloudFront.

importante

Si configura CloudFront para reenviar todos los encabezados al origen para un comportamiento de la caché, CloudFront nunca almacenará en caché los objetos asociados a dicho comportamiento. En su lugar, CloudFront reenviará todas las solicitudes de esos objetos al origen. En dicha configuración, el valor de Minimum TTL (Tiempo de vida mínimo) deberá ser 0. Para obtener más información, consulte Almacenamiento en caché de contenido en función de encabezados de solicitud.

Para especificar valores de Minimum TTL (Tiempo de vida mínimo), Maximum TTL (Tiempo de vida máximo) y Default TTL (Tiempo de vida predeterminado), debe elegir la opción Customize (Personalizar) en Object Caching (Almacenamiento de objetos en caché).

Configuración de origen Minimum TTL = 0 Seconds Minimum TTL > 0 Seconds

El origen añade una directiva Cache-Control max-age a los objetos

Almacenamiento en caché de CloudFront

CloudFront almacena en caché los objetos durante el menor de estos dos valores: el de la directiva Cache-Control max-age o el de TTL máximo de CloudFront.

Almacenamiento en caché de navegadores

Los navegadores almacenan en caché objetos según el valor de la directiva Cache-Control max-age.

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 de la directiva Cache-Control max-age:

  • Minimum TTL < max-age < maximum TTL

    CloudFront almacena objetos en la caché según el valor de la directiva Cache-Control max-age.

  • max-age < minimum TTL

    CloudFront almacena objetos en la caché según el valor del TTL mínimo de CloudFront.

  • max-age > maximum TTL

    CloudFront almacena objetos en la caché según el valor del TTL máximo de CloudFront.

Almacenamiento en caché de navegadores

Los navegadores almacenan en caché objetos según el valor de la directiva Cache-Control max-age.

El origen no añade una directiva Cache-Control max-age a los objetos

Almacenamiento en caché de CloudFront

CloudFront almacena objetos en la caché según el valor del TTL predeterminado de CloudFront.

Almacenamiento en caché de navegadores

Depende del navegador.

Almacenamiento en caché de CloudFront

CloudFront almacena en caché los objetos según el mayor de estos dos valores de CloudFront: TTL mínimo o predeterminado.

Almacenamiento en caché de navegadores

Depende del navegador.

El origen añade directivas Cache-Control max-age y Cache-Control s-maxage a los objetos

Almacenamiento en caché de CloudFront

CloudFront almacena en caché los objetos durante el menor de estos dos valores: el de la directiva Cache-Control s-maxage o el de TTL máximo de CloudFront.

Almacenamiento en caché de navegadores

Los navegadores almacenan en caché objetos según el valor de la directiva Cache-Control max-age.

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 de la directiva Cache-Control s-maxage:

  • Minimum TTL < s-maxage < maximum TTL

    CloudFront almacena objetos en la caché según el valor de la directiva Cache-Control s-maxage.

  • s-maxage < minimum TTL

    CloudFront almacena objetos en la caché según el valor del TTL mínimo de CloudFront.

  • s-maxage > maximum TTL

    CloudFront almacena objetos en la caché según el valor del TTL máximo de CloudFront.

Almacenamiento en caché de navegadores

Los navegadores almacenan en caché objetos según el valor de la directiva Cache-Control max-age.

El origen añade un encabezado Expires a los objetos

Almacenamiento en caché de CloudFront

CloudFront almacena en caché los objetos hasta la fecha del encabezado Expires o el valor del TTL máximo de CloudFront, lo que suceda antes.

Almacenamiento en caché de navegadores

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

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 Expires:

  • Minimum TTL < Expires < maximum TTL

    CloudFront almacena objetos en la caché hasta la fecha y hora del encabezado Expires.

  • Expires < minimum TTL

    CloudFront almacena objetos en la caché según el valor del TTL mínimo de CloudFront.

  • Expires > maximum TTL

    CloudFront almacena objetos en la caché según el valor del TTL máximo de CloudFront.

Almacenamiento en caché de navegadores

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

El origen añade directivas Cache-Control: no-cache, no-store o private a los objetos.

CloudFront y los navegadores respetan los encabezados.

Para ver una excepción de cómo CloudFront gestiona el encabezado Cache-Control: no-cache, consulte Solicitudes simultáneas del mismo objeto (picos de tráfico).

Almacenamiento en caché de CloudFront

CloudFront almacena objetos en la caché según el valor del TTL mínimo de CloudFront.

Almacenamiento en caché de navegadores

Los navegadores respetan los encabezados.

Para obtener más información acerca de cómo cambiar la configuración de distribuciones web desde la consola de CloudFront, consulte Actualización de una distribución. Para obtener más información acerca de cómo cambiar la configuración de distribuciones web con la API de CloudFront, consulte PUT Config.

Especificar el tiempo mínimo durante el cual CloudFront almacena en caché objetos para distribuciones RTMP

En el caso de distribuciones RTMP, CloudFront almacena objetos en cachés perimetrales durante 24 horas de forma predeterminada. Puede añadir encabezados Cache-Control o Expires a sus objetos para cambiar la cantidad de tiempo que CloudFront mantiene objetos en cachés perimetrales antes de reenviar otra solicitud al origen. La duración mínima es de 3 600 segundos (una hora). Si especifica un valor inferior, CloudFront utiliza 3600 segundos.

Añadir encabezados a sus objetos con la consola de Amazon S3

nota

En la consola de Amazon S3, solo puede añadir encabezados objeto a objeto, pero algunas herramientas de terceros le permiten añadir encabezados a varios objetos de Amazon S3 a la vez. Para obtener más información acerca de las herramientas de terceros compatibles con Amazon S3, busque en la web AWS S3 third party tools.

Para añadir un campo de encabezado Cache-Control o Expires a objetos de Amazon S3 desde la consola de Amazon S3

  1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3.

  2. En la consola de Amazon S3, en la lista Bucket name (Nombre de buckets) el nombre del bucket que contiene los archivos.

  3. En la lista Name (Nombre), seleccione el nombre del objeto al que desea añadir un encabezado.

  4. Seleccione Properties (Propiedades) y luego Metadata (Metadatos).

  5. Seleccione Add Metadata (Añadir metadatos) y, a continuación, en el menúKey (Clave), elija Cache-Control (Control de caché) o Expires (Caduca).

  6. En el campo Value (Valor), escriba una de las siguientes opciones:

    • En un campo Cache-Control, escriba:

      max-age=number of seconds that you want objects to stay in a CloudFront edge cache

    • En un campo Expires, escriba una fecha y hora en formato HTML.

  7. Seleccione Save.