Descripción de las políticas de caché - Amazon CloudFront

Descripción de las políticas de caché

Puede utilizar una política de caché para mejorar la proporción de aciertos de caché controlando los valores (cadenas de consulta de URL, encabezados HTTP y cookies) que se incluyen en la clave de caché. CloudFront proporciona algunas políticas de caché predefinidas, conocidas como políticas administradas, para casos de uso comunes. Puede usar estas políticas administradas o puede crear su propia política de caché que sea específica para sus necesidades. Para obtener más información sobre las políticas administradas, consulte Uso de políticas de caché administradas.

Una política de caché contiene la siguiente configuración, que se clasifica en información de política, configuración del tiempo de vida (TTL) y configuración de clave de caché.

Información de políticas

Nombre

Un nombre para identificar la política de caché. En la consola, se utiliza el nombre para asociar la política de caché a un comportamiento de caché.

Descripción

Un comentario para describir la política de caché. Esto es opcional, pero puede ayudarle a identificar el propósito de la política de caché.

Configuración del tiempo de vida (TTL)

La configuración del tiempo de vida (TTL) funciona junto con los encabezados HTTP Cache-Control y Expires (si están en la respuesta de origen) para determinar cuánto tiempo permanecen válidos los objetos de la caché de CloudFront.

Tiempo de vida mínimo

La cantidad de tiempo mínima, en segundos, que desea que los objetos permanezcan en la caché de CloudFront antes de que CloudFront compruebe con el origen si el objeto se ha actualizado. Para obtener más información, consulte Administración de cuánto tiempo se mantiene el contenido en una caché (vencimiento).

Tiempo de vida máximo

La cantidad de tiempo máxima, en segundos, que los objetos permanecen en la caché de CloudFront antes de que CloudFront compruebe con el origen si el objeto se ha actualizado. CloudFront utiliza esta configuración solo cuando el origen envía los encabezados Cache-Control o Expires con el objeto. Para obtener más información, consulte Administración de cuánto tiempo se mantiene el contenido en una caché (vencimiento).

Tiempo de vida (TTL) predeterminado

La cantidad de tiempo predeterminada, en segundos, que desea que los objetos permanezcan en la caché de CloudFront antes de que CloudFront compruebe con el origen si el objeto se ha actualizado. CloudFront utiliza este valor de configuración como TTL del objeto solo cuando el origen no envía encabezados Cache-Control ni Expires con el objeto. Para obtener más información, consulte Administración de cuánto tiempo se mantiene el contenido en una caché (vencimiento).

nota

Si los valores de TTL mínimo, TTL máximo y TTL predeterminado están establecidos en 0, se deshabilita el almacenamiento en caché de CloudFront.

Configuración de la clave de caché

La configuración de la clave de caché especifica los valores de las solicitudes de lector que CloudFront incluye en la clave de caché. Los valores pueden incluir cadenas de consulta de URL, encabezados HTTP y cookies. Los valores que se incluyen en la clave de caché se incluyen automáticamente en las solicitudes que CloudFront envía al origen, conocidas como solicitudes de origen. Para obtener información sobre cómo controlar las solicitudes de origen sin afectar a la clave de caché, consulte Control de las solicitudes de origen con una política.

La configuración de la clave de caché incluye:

Encabezados

Los encabezados HTTP en las solicitudes del lector que CloudFront incluye en la clave de caché y en las solicitudes de origen. En encabezados, puede elegir una de las siguientes configuraciones:

  • None (Ninguno): los encabezados HTTP en las solicitudes de lector no se incluyen en la clave de caché y no se incluyen automáticamente en las solicitudes de origen.

  • Include the following headers (Incluir los siguientes encabezados): esta opción le permite especificar los encabezados HTTP en las solicitudes de lector que se incluyen en la clave de caché y, de forma automática, en las solicitudes de origen.

Cuando se utiliza la opción Include the following headers (Incluir los siguientes encabezados), se especifican los encabezados HTTP por su nombre, no por su valor. Por ejemplo, fíjese en el encabezado HTTP siguiente:

Accept-Language: en-US,en;q=0.5

En este caso, se especifica el encabezado como Accept-Language, no como Accept-Language: en-US,en;q=0.5. Sin embargo, CloudFront incluye el encabezado completo, incluido su valor, en la clave de caché y en las solicitudes de origen.

También puede incluir ciertos encabezados generados por CloudFront en la clave de caché. Para obtener más información, consulte Añadido de encabezados de solicitudes de CloudFront.

Cookies

Las cookies en las solicitudes del lector que CloudFront incluye en la clave de caché y en las solicitudes de origen. Para cookies, puede elegir una de las siguientes configuraciones:

  • None (Ninguna): las cookies en las solicitudes de lector no se incluyen en la clave de caché y no se incluyen automáticamente en las solicitudes de origen.

  • All (Todas): las cookies en las solicitudes de lector se incluyen en la clave de caché y se incluyen automáticamente en las solicitudes de origen.

  • Include specified cookies (Incluir las cookies especificadas): esta opción le permite especificar las cookies de las solicitudes de lector que se incluyen en la clave de caché y, de forma automática, en las solicitudes de origen.

  • Include all cookies except (Incluir todas las cookies excepto): esta opción le permite especificar las cookies de las solicitudes de lector que no se incluyen en la clave de caché y no se incluyen de forma automática en las solicitudes de origen. Todas las demás cookies, excepto las que especifique, se incluyen en la clave de caché y se incluyen automáticamente en las solicitudes de origen.

Cuando utiliza la configuración Include specified cookies (Incluir las cookies especificadas) o Include all cookies except (Incluir todas las cookies excepto), se especifican las cookies por su nombre, no por su valor. Por ejemplo, fíjese en el encabezado Cookie siguiente:

Cookie: session_ID=abcd1234

En este caso, se especifica la cookie como session_ID, no como session_ID=abcd1234. Sin embargo, CloudFront incluye la cookie completa, incluido su valor, en la clave de caché y en las solicitudes de origen.

Cadenas de consulta

Las cadenas de consulta de URL en las solicitudes de lector que CloudFront incluye en la clave de caché y en las solicitudes de origen. Para cadenas de consulta, puede elegir una de las opciones siguientes:

  • None (Ninguna): las cadenas de consulta de las solicitudes del lector no se incluyen en la clave de caché y no se incluyen automáticamente en las solicitudes de origen.

  • All (Todas): todas las cadenas de consulta de las solicitudes de lector se incluyen en la clave de caché y también se incluyen automáticamente en las solicitudes de origen.

  • Include specified query strings (Incluir cadenas de consulta especificadas): esta opción le permite especificar las cadenas de consulta de las solicitudes de lector que se incluyen en la clave de caché y, de forma automática, en las solicitudes de origen.

  • Include all query strings except (Incluir todas las cadenas de consulta excepto): esta opción le permite especificar las cadenas de consulta de las solicitudes de lector que no se incluyen en la clave de caché y no se incluyen de forma automática en las solicitudes de origen. Todas las demás cadenas de consulta, excepto las especificadas, se incluyen en la clave de caché y se incluyen automáticamente en las solicitudes de origen.

Cuando se utiliza la configuración Include specified query strings (Incluir cadenas de consulta especificadas) o Include all query strings except (Incluir todas las cadenas de consulta excepto), se especifican cadenas de consulta por su nombre, no por su valor. Por ejemplo, fíjese en la ruta URL siguiente:

/content/stories/example-story.html?split-pages=false

En este caso, se especifica la cadena de consulta como split-pages, no como split-pages=false. Sin embargo, CloudFront incluye la cadena de consulta completa, incluido el valor, en la clave de caché y en las solicitudes de origen.

Compatibilidad con la compresión

Esta configuración permite a CloudFront solicitar y almacenar en caché objetos comprimidos en los formatos de compresión Gzip o Brotli, cuando el lector lo admite. Esta configuración también permite que la compresión de CloudFront funcione. Los lectores indican su compatibilidad con estos formatos de compresión con el encabezado HTTP Accept-Encoding.

nota

Los navegadores web Chrome y Firefox admiten compresión Brotli solo cuando la solicitud se envía mediante HTTPS. Estos navegadores no admiten Brotli con solicitudes HTTP.

Habilite esta configuración cuando se cumpla cualquiera de las siguientes condiciones:

  • Su origen devuelve objetos comprimidos Gzip cuando los lectores los admiten (las solicitudes contienen el encabezado HTTP Accept-Encoding con gzip como valor). En este caso, utilice la configuración habilitada para Gzip (establezca EnableAcceptEncodingGzip en true en la API de CloudFront, los SDK de AWS, AWS CLI o AWS CloudFormation).

  • El origen devuelve objetos comprimidos Brotli cuando los lectores los admiten (las solicitudes contienen el encabezado HTTP Accept-Encoding con br como valor). En este caso, utilice la configuración Brotli enabled (Brotli habilitado) (establezca EnableAcceptEncodingBrotli en true en la API de CloudFront, los SDK de AWS, AWS CLI o AWS CloudFormation).

  • El comportamiento de caché al que está asociada esta política de caché se configura con compresión de CloudFront. En este caso, puede habilitar el almacenamiento en caché para Gzip o Brotli, o ambos. Cuando la compresión de CloudFront está habilitada, habilitar el almacenamiento en caché para ambos formatos puede ayudar a reducir los costos de transferencia de datos salientes a Internet.

nota

Si habilita el almacenamiento en caché para uno de estos formatos de compresión o ambos, no incluya el encabezado Accept-Encoding en una política de solicitud de origen asociada con el mismo comportamiento de caché. CloudFront siempre incluye este encabezado en las solicitudes de origen cuando el almacenamiento en caché está habilitado para cualquiera de estos formatos, por lo que incluir Accept-Encoding en una política de solicitud de origen no tiene ningún efecto.

Si el servidor de origen no devuelve objetos comprimidos Gzip o Brotli o si el comportamiento de caché no está configurado con compresión de CloudFront, no habilite el almacenamiento en caché para objetos comprimidos. Si lo hace, es posible que provoque una disminución en la proporción de aciertos de caché.

A continuación, se explica cómo afecta esta configuración a una distribución de CloudFront. Todos los escenarios que se muestran a continuación, suponen que la solicitud del lector incluye el encabezado Accept-Encoding. Cuando la solicitud del lector no incluye el encabezado Accept-Encoding, CloudFront no incluye este encabezado en la clave de caché y no lo incluye en la solicitud de origen correspondiente.

Cuando se habilita el almacenamiento en caché de objetos comprimidos para ambos formatos de compresión

Si el lector admite Gzip y Brotli, es decir, si los valores gzip y br están en el encabezado Accept-Encoding de la solicitud del lector, CloudFront hace lo siguiente:

  • Normaliza el encabezado en Accept-Encoding: br,gzip e incluye el encabezado normalizado en la clave de caché. La clave de caché no incluye otros valores que estaban en el encabezado Accept-Encoding enviado por el lector.

  • Si la ubicación de borde tiene un objeto comprimido Brotli o Gzip en la caché que coincide con la solicitud y no ha caducado, la ubicación de borde devuelve el objeto al lector.

  • Si la ubicación periférica no tiene un objeto comprimido Brotli o Gzip en la caché que coincida con la solicitud y no haya vencido, CloudFront incluye el encabezado normalizado (Accept-Encoding: br,gzip) en la solicitud de origen correspondiente. La solicitud de origen no incluye otros valores que estaban en el encabezado Accept-Encoding enviado por el lector.

Si el lector admite un formato de compresión pero no el otro, por ejemplo, si gzip es un valor en el encabezado Accept-Encoding de la solicitud del lector pero br no, CloudFront hace lo siguiente:

  • Normaliza el encabezado en Accept-Encoding: gzip e incluye el encabezado normalizado en la clave de caché. La clave de caché no incluye otros valores que estaban en el encabezado Accept-Encoding enviado por el lector.

  • Si la ubicación de borde tiene un objeto comprimido Gzip en la caché que coincide con la solicitud y no ha caducado, la ubicación de borde devuelve el objeto al lector.

  • Si la ubicación periférica no tiene un objeto comprimido Gzip en la caché que coincida con la solicitud y no haya vencido, CloudFront incluye el encabezado normalizado (Accept-Encoding: gzip) en la solicitud de origen correspondiente. La solicitud de origen no incluye otros valores que estaban en el encabezado Accept-Encoding enviado por el lector.

Para entender lo que CloudFront hace si el lector admite Brotli pero no Gzip, reemplace los dos formatos de compresión entre sí en el ejemplo anterior.

Si el lector no admite Brotli ni Gzip, es decir, el encabezado Accept-Encoding de la solicitud del lector no contiene br ni gzip como valores, CloudFront:

  • No incluye el encabezado Accept-Encoding en la clave de caché.

  • Incluye Accept-Encoding: identity en la solicitud de origen correspondiente. La solicitud de origen no incluye otros valores que estaban en el encabezado Accept-Encoding enviado por el lector.

Cuando el almacenamiento en caché de objetos comprimidos está habilitado para un formato de compresión, pero no para el otro

Si el lector admite el formato para el que está habilitado el almacenamiento en caché, por ejemplo, si el almacenamiento en caché de objetos comprimidos está habilitado para Gzip y el lector admite Gzip (gzip es uno de los valores del encabezado Accept-Encoding de la solicitud del lector), CloudFront hace lo siguiente:

  • Normaliza el encabezado en Accept-Encoding: gzip e incluye el encabezado normalizado en la clave de caché.

  • Si la ubicación de borde tiene un objeto comprimido Gzip en la caché que coincide con la solicitud y no ha caducado, la ubicación de borde devuelve el objeto al lector.

  • Si la ubicación periférica no tiene un objeto comprimido Gzip en la caché que coincida con la solicitud y no haya vencido, CloudFront incluye el encabezado normalizado (Accept-Encoding: gzip) en la solicitud de origen correspondiente. La solicitud de origen no incluye otros valores que estaban en el encabezado Accept-Encoding enviado por el lector.

Este comportamiento es el mismo cuando el lector admite Gzip y Brotli (el encabezado Accept-Encoding de la solicitud del lector incluye gzip y br como valores), porque en este escenario, el almacenamiento en caché de objetos comprimidos para Brotli no está habilitado.

Para entender lo que CloudFront hace si el almacenamiento en caché de objetos comprimidos está habilitado para Brotli pero no para Gzip, reemplace los dos formatos de compresión entre sí en el ejemplo anterior.

Si el lector no admite el formato de compresión para el que está habilitado el almacenamiento en caché (el encabezado Accept-Encoding de la solicitud del lector no contiene el valor de ese formato), CloudFront:

  • No incluye el encabezado Accept-Encoding en la clave de caché.

  • Incluye Accept-Encoding: identity en la solicitud de origen correspondiente. La solicitud de origen no incluye otros valores que estaban en el encabezado Accept-Encoding enviado por el lector.

Cuando se desactiva el almacenamiento en caché de objetos comprimidos para ambos formatos de compresión

Cuando el almacenamiento en caché de objetos comprimidos está desactivado para ambos formatos de compresión, CloudFront trata el encabezado Accept-Encoding igual que cualquier otro encabezado HTTP en la solicitud del lector. De forma predeterminada, no se incluye en la clave de caché y no se incluye en las solicitudes de origen. Puede incluirlo en la lista de encabezados de una política de caché o una política de solicitud de origen igual que cualquier encabezado HTTP.