Almacenamiento en caché de contenido en función de cookies - Amazon CloudFront

Almacenamiento en caché de contenido en función de cookies

De forma predeterminada, CloudFront no tiene en cuenta las cookies al procesar solicitudes y respuestas, ni al almacenar en caché los objetos en ubicaciones periférica. Si CloudFront recibe dos solicitudes que sean idénticas excepto por lo que está en el encabezado de Cookie, de forma predeterminada, CloudFront trata las solicitudes como idénticas y devuelve el mismo objeto para ambas solicitudes.

Puede configurar CloudFront para reenviar al origen algunas o todas las cookies de las solicitudes de los lectores y para almacenar en caché diferentes versiones de los objetos en función de los valores de las cookies de las solicitudes que reenvía. Al hacerlo, CloudFront utiliza algunas o todas las cookies de las solicitudes de lectores (las que esté configurado para reenviar) para identificar de forma única un objeto en la caché.

Supongamos que las solicitudes de locations.html contienen una cookie country con un valor de uk o fr. Al configurar CloudFront para almacenar los objetos en la caché en función del valor de la cookie country, CloudFront reenvía al origen las solicitudes de locations.html e incluye la cookie country y su valor. El origen devuelve locations.html y CloudFront almacena el objeto una vez en la caché para las solicitudes cuyo valor de la cookie country sea uk y otra vez para las solicitudes cuyo valor de la cookie sea fr.

importante

Amazon S3 y algunos servidores HTTP no procesan cookies. No configure CloudFront para reenviar cookies a un origen que no procese cookies o que no varíe su respuesta en función de las cookies. Esto puede hacer que CloudFront reenvíe más solicitudes al origen para el mismo objeto, lo que ralentiza el rendimiento y aumenta la carga en el origen. Si, teniendo en cuenta el ejemplo anterior, su origen no procesa la cookie country o siempre devuelve la misma versión de locations.html a CloudFront independientemente del valor de la cookie country, no configure CloudFront para que reenvíe esa cookie.

Por el contrario, si el origen personalizado depende de una cookie en particular o envía diferentes respuestas en función de una cookie, asegúrese de configurar CloudFront para que reenvíe esa cookie al origen. De lo contrario, CloudFront elimina la cookie antes de reenviar la solicitud al origen.

Para configurar el reenvío de cookies, actualice el comportamiento de la caché de su distribución. Para obtener más información acerca de los comportamientos de caché, consulte Configuración del comportamiento de la caché y, en particular, las secciones Forward cookies (Reenvío de cookies) y Whitelist cookies (Lista blanca de cookies).

Puede configurar cada comportamiento de la caché para realizar una de las siguientes acciones:

  • Reenviar todas las cookies al origen: CloudFront incluye todas las cookies enviadas por el lector cuando reenvía las solicitudes al origen. Cuando el origen devuelve una respuesta, CloudFront almacena en caché la respuesta utilizando los nombres y valores de las cookies en la solicitud del lector. Si la respuesta de origen incluye encabezados Set-Cookie, CloudFront los devuelve al lector con el objeto solicitado. CloudFront también almacena en caché los encabezados Set-Cookie con el objeto devuelto desde el origen y envía esos encabezados Set-Cookie a los lectores en todos los aciertos de caché.

  • Reenviar un conjunto de cookies que especifique: CloudFront elimina las cookies que el lector envía y que no están en la lista blanca antes de que reenvíe una solicitud al origen. CloudFront almacena en caché la respuesta mediante el uso de los nombres y los valores de las cookies enumerados en la solicitud del lector. Si la respuesta de origen incluye encabezados Set-Cookie, CloudFront los devuelve al lector con el objeto solicitado. CloudFront también almacena en caché los encabezados Set-Cookie con el objeto devuelto desde el origen y envía esos encabezados Set-Cookie a los lectores en todos los aciertos de caché.

    Para obtener información acerca de la especificación de comodines en nombres de cookies, consulte Whitelist cookies (Lista blanca de cookies).

    Para consultar la cuota actual de la cantidad de nombres de cookies que puede reenviar para cada comportamiento de la caché o para solicitar una ampliación de la cuota, consulte Cuotas en cadenas de consulta (configuración de caché heredada).

  • No reenviar las cookies al origen: CloudFront no almacena los objetos en la caché en función de cookies enviadas por el lector. Además, CloudFront elimina las cookies antes de reenviar las solicitudes al origen y elimina los encabezados Set-Cookie de las respuestas antes de devolver las respuestas a los lectores.

Tenga en cuenta lo siguiente acerca de especificar las cookies que desea reenviar:

Logs de acceso

Si configura CloudFront para registrar solicitudes y registrar cookies, CloudFront registra todas las cookies y todos los atributos de cookies, incluso si configura CloudFront para no reenviar cookies al origen o si configura CloudFront para reenviar solo cookies específicas. Para obtener más información acerca del registro de CloudFront, consulte Configuración y uso de registros estándar (registros de acceso).

Sensibilidad de mayúsculas y minúsculas

Los nombres y valores de las cookies distinguen entre mayúsculas y minúsculas. Por ejemplo, si se configura CloudFront para reenviar todas las cookies y dos solicitudes de lector para el mismo objeto tienen cookies que son idénticas excepto por el caso, CloudFront almacena el objeto dos veces en la caché.

CloudFront ordena las cookies

Si se configura CloudFront para reenviar las cookies (todas o un subconjunto), CloudFront ordena las cookies en orden natural por nombre de cookie antes de reenviar la solicitud al origen.

If-Modified-Since y If-None-Match

Las solicitudes condicionales If-Modified-Since y If-None-Match no son compatibles cuando CloudFront se configura para reenviar cookies (todas o un subconjunto).

Formato necesario de pares de nombre-valor estándar

CloudFront reenvía un encabezado de cookie solo si el valor se ajusta al formato estándar de pares de nombre-valor, por ejemplo: "Cookie: cookie1=value1; cookie2=value2"

Deshabilitar el almacenamiento en caché de los encabezados Set-Cookie

Si se configura CloudFront para reenviar cookies al origen (ya sean todas o cookies específicas), también almacena en caché los encabezados Set-Cookie recibidos en la respuesta de origen. CloudFront incluye estos encabezados Set-Cookie en la respuesta al lector original y también los incluye en las respuestas posteriores que se sirven desde la caché de CloudFront.

Si desea recibir cookies en el origen pero no desea que CloudFront almacene en caché los encabezados Set-Cookie en las respuestas del origen, configure el origen para agregar un encabezado Cache-Control con una política de no-cache que especifique Set-Cookie como nombre de campo. Por ejemplo: Cache-Control: no-cache="Set-Cookie". Para obtener más información, consulte Directivas de respuesta de control de caché en el protocolo de transferencia de hipertexto (HTTP/1.1): almacenamiento en caché estándar.

Longitud máxima de los nombres de las cookies

Si configura CloudFront para reenviar cookies específicas al origen, la cantidad total de bytes en todos los nombres de cookies que configure para que CloudFront los reenvíe no puede superar los 512 menos la cantidad de cookies que reenvía. Por ejemplo, si configura CloudFront para reenviar 10 cookies al origen, la longitud combinada de los nombres de las 10 cookies no puede superar los 502 bytes (512-10).

Si configura CloudFront para reenviar todas las cookies al origen, la longitud de los nombres de las cookies no importa.

Para obtener más información acerca del uso de la consola de CloudFront para actualizar una distribución de modo que CloudFront reenvíe las cookies al origen, consulte Actualización de una distribución. Para obtener información sobre el uso de la API de CloudFront para actualizar una distribución, consulte UpdateDistribution en la Referencia de la API de Amazon CloudFront.