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 Reenvío de cookies y Cookies de lista de permitidos.
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 encabezadosSet-Cookie
con el objeto devuelto desde el origen y envía esos encabezadosSet-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 encabezadosSet-Cookie
con el objeto devuelto desde el origen y envía esos encabezadosSet-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 Cookies de lista de permitidos.
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 caché según las 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. Como esta no es la forma óptima de utilizar los recursos de origen, al seleccionar este comportamiento de caché, debe asegurarse de que el origen no incluya cookies en las respuestas de origen de forma predeterminada.
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.
nota
No se admiten nombres de cookies que empiecen por el carácter
$
. CloudFront eliminará la cookie antes de reenviar la solicitud al origen. Puede eliminar el carácter$
o especificar otro distinto al principio del nombre de la cookie. If-Modified-Since
yIf-None-Match
-
Las solicitudes condicionales
If-Modified-Since
yIf-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 encabezadosSet-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 encabezadoCache-Control
con una política deno-cache
que especifiqueSet-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 Actualizar 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.