Control de la clave de caché - 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.

Control de la clave de caché

Con Amazon CloudFront, puedes controlar la clave de caché de los objetos que se almacenan en caché en ubicaciones de CloudFront borde. La clave de caché es el identificador único de cada objeto de la caché y determina si una solicitud de lector da como resultado un acierto de la caché. Un acierto de caché se produce cuando una solicitud de lector genera la misma clave de caché que una solicitud anterior y el objeto de esa clave de caché está en la caché de la ubicación periférica y es válido. Cuando se produce un error en la memoria caché, el objeto se muestra al espectador desde una ubicación CloudFront perimetral, lo que ofrece las siguientes ventajas:

  • Carga reducida en el servidor de origen

  • Latencia reducida para el lector

Puede obtener un mejor rendimiento de su sitio web o aplicación cuando tiene una proporción de aciertos de caché más alta (una mayor proporción de solicitudes de lectores da como resultado un acierto de caché). Una forma de mejorar la proporción de aciertos de caché es incluir solo los valores mínimos necesarios en la clave de caché. Para obtener más información, consulte Descripción de la clave de caché.

Para controlar la clave de caché, se utiliza una política de CloudFront caché. Adjunta una política de caché a uno o más comportamientos de caché en una CloudFront distribución.

Creación de 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é. Puedes crear una política de caché en la CloudFront consola, con AWS Command Line Interface (AWS CLI) o con la CloudFront API.

Después de crear una política de caché, se asocia a uno o más comportamientos de caché en una distribución de CloudFront .

Console
Para crear una política de caché (consola)
  1. Inicia sesión en la página Políticas de la CloudFront consola AWS Management Console y ábrela enhttps://console.aws.amazon.com/cloudfront/v4/home?#/policies.

  2. Elija Create cache policy (Crear política de caché).

  3. Elija la configuración deseada para esta política de caché. Para obtener más información, consulte Descripción de las políticas de caché.

  4. Cuando termine, elija Create (Crear).

Después de crear una política de caché, puede asociarla a un comportamiento de caché.

Para asociar una política de caché a una distribución existente (consola)
  1. Abra la página de distribuciones en la CloudFront consola enhttps://console.aws.amazon.com/cloudfront/v4/home#/distributions.

  2. Elija la distribución que se va a actualizar y, a continuación, elija la pestaña Behaviors (Comportamientos).

  3. Elija el comportamiento de caché que se va a actualizar y, a continuación, elija Edit (Editar).

    O bien, para crear un nuevo comportamiento de caché, elija Create behavior (Crear comportamiento).

  4. En la sección Cache key and origin requests (Solicitudes de origen y clave de caché), asegúrese de elegir Cache policy and origin request policy (Política de caché y política de solicitud de origen).

  5. En Cache policy (Política de caché), elija la política de caché que se va a asociar a este comportamiento de caché.

  6. Elija Save changes (Guardar cambios) en la parte inferior de la página.

Para asociar una política de caché a una nueva distribución (consola)
  1. Abra la CloudFront consola en. https://console.aws.amazon.com/cloudfront/v4/home

  2. Elija Create distribution (Crear distribución).

  3. En la sección Solicitudes de origen y clave de caché, asegúrese de elegir Política de caché y política de solicitud de origen.

  4. En Cache policy (Política de caché), elija la política de caché que se asocia al comportamiento predeterminado de la caché de esta distribución.

  5. Elija la configuración deseada para el origen, el comportamiento predeterminado de la caché y la distribución. Para obtener más información, consulte Valores que deben especificarse al crear o actualizar una distribución.

  6. Cuando termine, elija Create distribution (Crear distribución).

CLI

Para crear una política de caché con AWS Command Line Interface (AWS CLI), utilice el comando aws cloudfront create-cache-policy. Puede utilizar un archivo de entrada para proporcionar los parámetros de entrada del comando, en lugar de especificar cada parámetro individual como entrada de línea de comandos.

Para crear una política de caché (CLI con archivo de entrada)
  1. Utilice el siguiente comando para crear un archivo denominado cache-policy.yaml que contenga todos los parámetros de entrada del comando create-cache-policy.

    aws cloudfront create-cache-policy --generate-cli-skeleton yaml-input > cache-policy.yaml
  2. Abra el archivo llamado cache-policy.yaml que acaba de crear. Edite el archivo para especificar la configuración de política de caché que desee y, a continuación, guarde el archivo. Puede eliminar campos opcionales del archivo, pero no eliminar los campos obligatorios.

    Para obtener más información acerca de la configuración de política de caché, consulte Descripción de las políticas de caché.

  3. Utilice el siguiente comando para crear la política de caché utilizando parámetros de entrada del archivo de cache-policy.yaml.

    aws cloudfront create-cache-policy --cli-input-yaml file://cache-policy.yaml

    Anote el valor de Id en la salida del comando. Este es el identificador de la política de caché y lo necesita para adjuntar la política de caché al comportamiento de la caché de una CloudFront distribución.

Para asociar una política de caché a una distribución existente (CLI con archivo de entrada)
  1. Use el siguiente comando para guardar la configuración de CloudFront distribución de la distribución que desee actualizar. Reemplace distribution_ID por el ID de la distribución.

    aws cloudfront get-distribution-config --id distribution_ID --output yaml > dist-config.yaml
  2. Abra el archivo llamado dist-config.yaml que acaba de crear. Edite el archivo, realizando los siguientes cambios en cada comportamiento de caché que actualice para utilizar una política de caché.

    • En el comportamiento de caché, agregue un campo denominado CachePolicyId. Para el valor del campo, utilice el ID de política de caché que anotó después de crear la política.

    • Elimine los campos MinTTL, MaxTTL, DefaultTTL y ForwardedValues del comportamiento de la caché. Estas configuraciones se especifican en la política de caché, por lo que no puede incluir estos campos ni una política de caché en el mismo comportamiento de caché.

    • Cambie el nombre del campo ETag a IfMatch, pero no cambie el valor del campo.

    Guarde el archivo cuando haya terminado.

  3. Utilice el siguiente comando para actualizar la distribución y utilizar la política de caché. Reemplace distribution_ID por el ID de la distribución.

    aws cloudfront update-distribution --id distribution_ID --cli-input-yaml file://dist-config.yaml
Para asociar una política de caché a una nueva distribución (CLI con archivo de entrada)
  1. Utilice el siguiente comando para crear un archivo denominado distribution.yaml que contenga todos los parámetros de entrada del comando create-distribution.

    aws cloudfront create-distribution --generate-cli-skeleton yaml-input > distribution.yaml
  2. Abra el archivo llamado distribution.yaml que acaba de crear. En el comportamiento de caché predeterminado, en el campo CachePolicyId, escriba el ID de política de caché que anotó después de crear la política. Siga editando el archivo para especificar la configuración de distribución que desee y, a continuación, guarde el archivo cuando termine.

    Para obtener más información acerca de la configuración de distribución, consulte Valores que deben especificarse al crear o actualizar una distribución.

  3. Utilice el siguiente comando para crear la distribución mediante los parámetros de entrada del archivo de distribution.yaml.

    aws cloudfront create-distribution --cli-input-yaml file://distribution.yaml
API

Para crear una política de caché con la CloudFront API, utilice CreateCachePolicy. Para obtener más información sobre los campos que especifique en esta llamada a la API, consulte Descripción de las políticas de caché y la documentación de referencia de la API para el SDK de AWS u otro cliente de la API.

Después de crear una política de caché, puede asociarla a un comportamiento de caché mediante una de las siguientes llamadas a la API:

  • Para adjuntarla a un comportamiento de caché en una distribución existente, utilice UpdateDistribution.

  • Para adjuntarlo a un comportamiento de caché en una distribución nueva, utilice CreateDistribution.

Para estas llamadas a la API, proporcione el ID de la política de caché en el campo CachePolicyId, dentro de un comportamiento de caché. Para obtener más información sobre los otros campos que especifique en estas llamadas a la API, consulte Valores que deben especificarse al crear o actualizar una distribución y la documentación de referencia de la API para el SDK de AWS u otro cliente de la API.

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 las 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 Expires HTTP Cache-Control y HTTP (si están en la respuesta de origen) para determinar durante cuánto tiempo permanecen válidos los objetos de la CloudFront caché.

Tiempo de vida mínimo

El tiempo mínimo, en segundos, que quieres que los objetos permanezcan en la CloudFront caché antes de CloudFront comprobar 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

El tiempo máximo, en segundos, que los objetos permanecen en la CloudFront caché antes de CloudFront comprobar con el origen si el objeto se ha actualizado. CloudFront usa esta configuración solo cuando el origen envía Cache-Control o Expires enlaza 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

El tiempo predeterminado, en segundos, que quieres que los objetos permanezcan en la CloudFront caché antes de CloudFront comprobar con el origen si el objeto se ha actualizado. CloudFront usa el valor de esta configuración como el TTL del objeto solo cuando el origen no envía Cache-Control ningún Expires encabezado 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 ajustes de TTL mínimo, TTL máximo y TTL predeterminado están todos establecidos en 0, se deshabilita el almacenamiento en caché. CloudFront

Configuración de la clave de caché

La configuración de la clave de caché especifica los valores de las solicitudes de los espectadores que se CloudFront incluyen 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 solicitudes de origen.

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

Encabezados

Los encabezados HTTP de las solicitudes del espectador que se CloudFront incluyen 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 puedes incluir algunos encabezados generados por la clave CloudFront de caché. Para obtener más información, consulte Añadir encabezados de CloudFront solicitud.

Cookies

Las cookies de las solicitudes de los espectadores que se CloudFront incluyen 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 los espectadores que se CloudFront incluyen 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 su valor, en la clave de caché y en las solicitudes de origen.

Compatibilidad con la compresión

Esta configuración CloudFront permite solicitar y almacenar en caché los objetos que están comprimidos en los formatos de compresión Gzip o Brotli, cuando el visor lo admite. Estos ajustes también permiten 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, usa la configuración habilitada para Gzip (establecida true en EnableAcceptEncodingGzip la CloudFront API, los AWS SDK o). AWS CLI 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, usa la configuración habilitada para Brotli (establecida true en EnableAcceptEncodingBrotli la CloudFront API, los AWS SDK o). AWS CLI 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 CloudFront la compresión está habilitada, habilitar el almacenamiento en caché para ambos formatos puede ayudar a reducir los costos de transferencia de datos a Internet.

nota

Si habilitas el almacenamiento en caché para uno o ambos formatos de compresión, no incluyas el Accept-Encoding encabezado en una política de solicitudes de origen que esté asociada al mismo comportamiento de la caché. CloudFrontsiempre incluye este encabezado en las solicitudes de origen cuando el almacenamiento en caché está habilitado para cualquiera de estos formatos, por lo que su inclusión Accept-Encoding en una política de solicitudes de origen no tiene ningún efecto.

Si tu servidor de origen no devuelve objetos comprimidos con Gzip o Brotli, o si el comportamiento de la caché no está configurado con la CloudFront compresión, no habilites el almacenamiento en caché de los 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 afectan estos ajustes a una distribución. 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 espectador no incluye el Accept-Encoding encabezado, CloudFront no incluye este encabezado en la clave de caché ni en la solicitud de origen correspondiente.

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

Si el visor admite Gzip y Brotli (es decir, si ambos br valores gzip y están en el Accept-Encoding encabezado de la solicitud del visor), haga lo siguiente: CloudFront

  • 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 de borde no tiene ningún objeto comprimido con Brotli o Gzip en la caché que coincida con la solicitud y no haya caducado, CloudFront incluye el encabezado normalizado () en la solicitud de origen correspondiente. Accept-Encoding: br,gzip La solicitud de origen no incluye otros valores que estaban en el encabezado Accept-Encoding enviado por el lector.

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

  • 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 de borde no tiene ningún objeto comprimido con Gzip en la caché que coincida con la solicitud y no haya caducado, 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 saber CloudFront qué pasa si el visor es compatible con Brotli pero no con Gzip, sustituya los dos formatos de compresión entre sí en el ejemplo anterior.

Si el visor no admite Brotli o Gzip (es decir, el Accept-Encoding encabezado de la solicitud del visor no contiene valores ni contiene valores): br gzip 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 visor 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 visor admite Gzip (gzipes uno de los valores del encabezado de la solicitud del visor), haga lo siguiente: Accept-Encoding CloudFront

  • 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 de borde no tiene ningún objeto comprimido con Gzip en la caché que coincida con la solicitud y no haya caducado, CloudFront incluye el encabezado normalizado () en la solicitud de origen correspondiente. Accept-Encoding: gzip 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 saber CloudFront qué pasa si el almacenamiento en caché de objetos comprimidos está habilitado para Brotli pero no para Gzip, sustituya los dos formatos de compresión entre sí en el ejemplo anterior.

Si el visor no admite el formato de compresión para el que está habilitado el almacenamiento en caché (el Accept-Encoding encabezado de la solicitud del visor no contiene el valor de ese formato), haz lo siguiente: 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

Si el almacenamiento en caché de los objetos comprimidos está desactivado para ambos formatos de compresión, CloudFront trata el Accept-Encoding encabezado de la misma manera que cualquier otro encabezado HTTP de la solicitud del visor. 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.