Descripción 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.

Descripción de la clave de caché

La clave de caché determina si una solicitud del espectador a una ubicación de CloudFront borde provoca un acceso a la memoria caché. La clave de caché es el identificador único de un objeto en la caché. Cada objeto de la caché tiene una clave de caché única.

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 de borde y es válido. Cuando se produce un error en la memoria caché, el objeto solicitado se entrega 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é mayor (una mayor proporción de solicitudes de lectores que dan lugar a 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 las siguientes secciones.

Puede modificar los valores (cadenas de consulta de URL, encabezados HTTP y cookies) en la clave de caché mediante una política de caché. (También puede modificar la clave de caché usando una función Lambda@Edge). Antes de modificar la clave de caché, es importante comprender cómo se diseña la aplicación y cuándo y cómo es posible que sirva diferentes respuestas en función de las características de la solicitud del lector. Cuando un valor de la solicitud del lector determina la respuesta que devuelve el origen, debe incluir ese valor en la clave de caché. Pero si incluye un valor en la clave de caché que no afecta a la respuesta que devuelve su origen, es posible que termine almacenando en caché objetos duplicados.

La clave de caché predeterminada

De forma predeterminada, la clave de caché de una CloudFront distribución incluye la siguiente información:

  • El nombre de dominio de la CloudFront distribución (por ejemplo, d111111abcdef8.cloudfront.net)

  • La ruta URL del objeto solicitado (por ejemplo, /content/stories/example-story.html)

nota

El método OPTIONS se incluye en la clave de caché para solicitudes OPTIONS. Esto significa que las respuestas a las solicitudes OPTIONS se almacenan en caché por separado de las respuestas a solicitudes GET y HEAD.

Otros valores de la solicitud del lector no se incluyen en la clave de caché, de forma predeterminada. Considere la siguiente solicitud HTTP desde un navegador web.

GET /content/stories/example-story.html?ref=0123abc&split-pages=false HTTP/1.1 Host: d111111abcdef8.cloudfront.net User-Agent: Mozilla/5.0 Gecko/20100101 Firefox/68.0 Accept: text/html,*/* Accept-Language: en-US,en Cookie: session_id=01234abcd Referer: https://news.example.com/

Cuando una solicitud de un espectador, como en este ejemplo, llega a una ubicación de CloudFront borde, CloudFront utiliza la clave de caché para determinar si se ha producido un acceso a la caché. De forma predeterminada, solo los siguientes componentes de la solicitud se incluyen en la clave de caché: /content/stories/example-story.html y d111111abcdef8.cloudfront.net. Si el objeto solicitado no está en la caché (error de caché), CloudFront envía una solicitud al origen para obtener el objeto. Tras obtener el objeto, lo CloudFront devuelve al espectador y lo guarda en la memoria caché de la ubicación perimetral.

Cuando CloudFront recibe otra solicitud para el mismo objeto, determinada por la clave de caché, entrega CloudFront el objeto almacenado en caché al espectador de forma inmediata, sin enviar ninguna solicitud al origen. Por ejemplo, considere la siguiente solicitud HTTP que aparece después de la solicitud anterior.

GET /content/stories/example-story.html?ref=xyz987&split-pages=true HTTP/1.1 Host: d111111abcdef8.cloudfront.net User-Agent: Mozilla/5.0 AppleWebKit/537.36 Chrome/83.0.4103.116 Accept: text/html,*/* Accept-Language: en-US,en Cookie: session_id=wxyz9876 Referer: https://rss.news.example.net/

Esta solicitud es para el mismo objeto que la solicitud anterior, pero es diferente de la solicitud anterior. Tiene una cadena de consulta de URL diferente, encabezados User-Agent y Referer diferentes y una cookie de session_id diferente. Sin embargo, ninguno de estos valores forma parte de la clave de caché de forma predeterminada, por lo que esta segunda solicitud da como resultado un acierto de caché.

Personalización de la clave de caché

En algunos casos, es posible que desee incluir más información en la clave de caché, aunque al hacerlo es posible que dé como resultado menos aciertos de la caché. Se especifica qué incluir en la clave de caché mediante una política de caché.

Por ejemplo, si el servidor de origen utiliza el encabezado HTTP Accept-Language en las solicitudes del lector para devolver contenido diferente en función del idioma del lector, es posible que desee incluir este encabezado en la clave de caché. Al hacerlo, CloudFront utiliza este encabezado para determinar las visitas a la caché e incluye el encabezado en las solicitudes de origen (solicitudes que se CloudFront envían al origen cuando no se encuentra memoria caché).

Una posible consecuencia de incluir valores adicionales en la clave de caché es que CloudFront podrían acabar almacenando en caché los objetos duplicados debido a las variaciones que pueden producirse en las solicitudes de los espectadores. Por ejemplo, es posible que los lectores puedan enviar cualquiera de los siguientes valores para el encabezado Accept-Language:

  • en-US,en

  • en,en-US

  • en-US, en

  • en-US

Todos estos valores diferentes indican que el idioma del espectador es el inglés, pero la variación puede provocar CloudFront que se almacene en caché el mismo objeto varias veces. Esto puede reducir los aciertos de caché y aumentar el número de solicitudes de origen. Se puede evitar esta duplicación si no se incluye el encabezado Accept-Language en la clave de caché y, en su lugar, se configura su sitio web o aplicación para utilizar diferentes URL para el contenido en diferentes idiomas (por ejemplo, /en-US/content/stories/example-story.html).

Para cualquier valor dado que se pretenda incluir en la clave de caché, se debe estar seguro de comprender cuántas variaciones diferentes de ese valor es posible que aparezcan en las solicitudes del lector. Para ciertos valores de solicitud, rara vez tiene sentido incluirlos en la clave de caché. Por ejemplo, el encabezado User-Agent puede tener miles de variaciones únicas, por lo que generalmente no es un buen candidato para incluirlo en la clave de caché. Las cookies que tienen valores específicos del usuario o específicos de la sesión y son únicas en miles (o incluso millones) de solicitudes tampoco son buenos candidatos para la inclusión de claves de caché. Si incluye estos valores en la clave de caché, cada variación única da como resultado otra copia del objeto en la caché. Si estas copias del objeto no son únicas o si termina con un número tan grande de objetos ligeramente diferentes que cada objeto solo obtiene un pequeño número de aciertos de caché, es posible que desee considerar un enfoque diferente. Puede excluir estos valores altamente variables de la clave de caché o puede marcar objetos como no almacenables en caché.

Tenga cuidado al personalizar la clave de caché. A veces es deseable, pero puede tener consecuencias no deseadas como almacenar en caché objetos duplicados, reducir la proporción de aciertos de caché y aumentar el número de solicitudes de origen. Si su sitio web o aplicación de origen necesita recibir ciertos valores de las solicitudes del lector para análisis, telemetría u otros usos, pero estos valores no cambian el objeto que devuelve el origen, utilice una política de solicitud de origen para incluir estos valores en las solicitudes de origen pero no incluirlos en la clave de caché.