Comportamiento de solicitudes y respuestas para orígenes personalizados - Amazon CloudFront

Comportamiento de solicitudes y respuestas para orígenes personalizados

Para entender cómo CloudFront procesa solicitudes y respuestas cuando se está utilizando orígenes personalizados, consulte las secciones siguientes:

Cómo procesa y reenvía CloudFront solicitudes a su origen personalizado

Obtenga información sobre cómo CloudFront procesa solicitudes de lectores y las reenvía a su origen personalizado.

Autenticación

Si reenvía el encabezado Authorization a su origen, puede configurar el servidor de origen a fin de solicitar autenticación del cliente para los siguientes tipos de solicitudes:

  • DELETE

  • GET

  • HEAD

  • PATCH

  • PUT

  • POST

Para las solicitudes OPTIONS, la autenticación del cliente solo se puede configurar si utiliza las siguientes opciones de CloudFront:

  • CloudFront se ha configurado para reenviar el encabezado Authorization al origen.

  • CloudFront se ha configurado para que no almacene en caché la respuesta a solicitudes OPTIONS.

Para obtener más información, consulte Configuración de CloudFront para reenviar el encabezado de Authorization.

Puede utilizar HTTP o HTTPS para reenviar las solicitudes al servidor de origen. Para obtener más información, consulte Uso de HTTPS con CloudFront.

Duración de almacenamiento en caché y TTL mínimo

Para controlar durante cuánto tiempo se mantienen los objetos en una caché de CloudFront antes de que CloudFront reenvíe otra solicitud al origen, puede:

  • Configure su origen para añadir un Cache-Control o un encabezado Expires para cada objeto.

  • Especificar un valor de TTL mínimo en comportamientos de la caché de CloudFront.

  • Utilice el valor de predeterminado de 24 horas.

Para obtener más información, consulte Administración de cuánto tiempo se mantiene el contenido en una caché (vencimiento).

Direcciones IP de clientes

Si un lector envía una solicitud a CloudFront y no incluye un encabezado de solicitud X-Forwarded-For, CloudFront obtiene la dirección IP del lector de la conexión TCP, agrega un encabezado X-Forwarded-For que incluya la dirección IP y reenvía la solicitud al origen. Por ejemplo, si CloudFront obtiene la dirección IP 192.0.2.2 de la conexión TCP, reenvía el siguiente encabezado al origen:

X-Forwarded-For: 192.0.2.2

Si un lector envía una solicitud a CloudFront e incluye un encabezado de solicitud X-Forwarded-For, CloudFront obtiene la dirección IP del lector de la conexión TCP, la agrega al final del encabezado X-Forwarded-For que incluya la dirección IP y reenvía la solicitud al origen. Por ejemplo, si la solicitud del lector incluye X-Forwarded-For: 192.0.2.4,192.0.2.3 y CloudFront obtiene la dirección IP 192.0.2.2 de la conexión TCP, reenvía el siguiente encabezado al origen:

X-Forwarded-For: 192.0.2.4,192.0.2.3,192.0.2.2

Algunas aplicaciones, como, por ejemplo, equilibradores de carga (incluido Elastic Load Balancing), firewalls de aplicaciones web, proxis inversos, sistemas de prevención de intrusos y API Gateway, agregan la dirección IP del servidor de borde de CloudFront que reenvía la solicitud al extremo del encabezado X-Forwarded-For. Por ejemplo, si CloudFront incluye X-Forwarded-For: 192.0.2.2 en una solicitud que reenvía a ELB y si la dirección IP del servidor periférico de CloudFront es 192.0.2.199, la solicitud que recibe su instancia EC2 contiene el siguiente encabezado:

X-Forwarded-For: 192.0.2.2,192.0.2.199

nota

El encabezado X-Forwarded-For contiene direcciones IPv4 (como 192.0.2.44) e IPv6 (como 2001:0db8:85a3::8a2e:0370:7334).

Tenga en cuenta también que todos los nodos de la ruta al servidor actual (CloudFront) pueden modificar el encabezado X-Forwarded-For. Para obtener más información, consulte la sección 8.1 de RFC 7239. También puede modificar el encabezado mediante las funciones de computación en la periferia de CloudFront.

Autenticación SSL del lado del cliente

CloudFront no admite la autenticación del cliente con certificados SSL del lado del cliente. Si un origen solicita un certificado de cliente, CloudFront interrumpe la solicitud.

Compresión

Para obtener más información, consulte Ofrecimiento de archivos comprimidos.

Solicitudes condicionales

Cuando CloudFront recibe una solicitud de un objeto que ha caducado en una caché perimetral, reenvía la solicitud al origen para obtener la última versión del objeto o para obtener la confirmación del origen de que la caché perimetral de CloudFront ya dispone de la última versión. Por lo general, la última vez que el origen envía el objeto a CloudFront, incluye un valor ETag, un valor LastModified o ambos en la respuesta. En la nueva solicitud que CloudFront reenvía al origen, CloudFront agrega uno o ambos de los siguientes elementos:

  • Un encabezado If-Match o If-None-Match que contenga el valor ETag para la versión caducada del objeto.

  • Un encabezado If-Modified-Since que contenga el valor LastModified para la versión caducada del objeto.

El origen utiliza esta información para determinar si el objeto se ha actualizado y, en consecuencia, devolver todo el objeto a CloudFront o devolver solo un código de estado HTTP 304 (no modificado).

nota

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

Para obtener más información, consulte Almacenamiento en caché de contenido en función de cookies.

Cookies

Puede configurar CloudFront para que reenvíe cookies al origen. Para obtener más información, consulte Almacenamiento en caché de contenido en función de cookies.

Uso compartido de recursos entre orígenes (CORS)

Si desea que CloudFront respete la configuración de intercambio de recursos entre orígenes, configure Origin para que reenvíe el encabezado al origen. Para obtener más información, consulte Almacenamiento en caché de contenido en función de encabezados de solicitud.

Cifrado

Puede requerir que los lectores utilicen HTTPS para enviar solicitudes a CloudFront y exigir a CloudFront que reenvíe las solicitudes a su origen personalizado mediante el protocolo que utiliza el lector. Para obtener más información, consulte la siguiente configuración de distribución:

CloudFront reenvía las solicitudes HTTPS al servidor de origen mediante los protocolos SSLv3, TLSv1.0, TLSv1.1 y TLSv1.2. En el caso de orígenes personalizados, puede elegir los protocolos SSL que desea que CloudFront utilice al comunicarse con su origen:

  • Si utiliza la consola de CloudFront, elija los protocolos en las casillas Origin SSL Protocols (Protocolos SSL de origen). Para obtener más información, consulte Creación de una distribución.

  • Si utiliza la API de CloudFront, especifique los protocolos mediante el elemento OriginSslProtocols. Para obtener más información, consulte OriginSslProtocols y DistributionConfig en la Referencia de la API de Amazon CloudFront.

Si el origen es un bucket de Amazon S3, CloudFront siempre utiliza TLSv1.2.

importante

Otras versiones de SSL y TLS no son compatibles.

Para obtener más información acerca del uso de HTTPS con CloudFront, consulte Uso de HTTPS con CloudFront. Para obtener listas de los algoritmos criptográficos que CloudFront admite para la comunicación HTTPS entre lectores y CloudFront, y entre CloudFront y su origen, consulte Protocolos y cifrados admitidos entre lectores y CloudFront.

Solicitudes GET que incluyen un cuerpo

Si una solicitud GET del lector incluye un cuerpo, CloudFront devuelve un código de estado HTTP 403 (prohibido) al lector.

Métodos HTTP

Si configura CloudFront para procesar todos los métodos de HTTP que admite, CloudFront acepta las siguientes solicitudes de los lectores y las reenvía al origen personalizado:

  • DELETE

  • GET

  • HEAD

  • OPTIONS

  • PATCH

  • POST

  • PUT

CloudFront siempre almacena en caché las respuestas a las solicitudes GET y HEAD. También puede configurar CloudFront para almacenar en caché las respuestas a solicitudes OPTIONS. CloudFront no almacena en caché las respuestas a las solicitudes que utilizan los otros métodos.

Para obtener más información acerca de la configuración para que su origen personalizado procese estos métodos, consulte la documentación de su origen.

importante

Si configura CloudFront para aceptar y reenviar al origen todos los métodos HTTP que admite CloudFront, configure su servidor de origen para administrar todos los métodos. Por ejemplo, si configura CloudFront para aceptar y reenviar estos métodos porque desea utilizar POST, debe configurar también su servidor de origen para administrar las solicitudes DELETE adecuadamente, de forma que los lectores no puedan eliminar los recursos que no desee que eliminen. Para obtener más información, consulte la documentación de su servidor HTTP.

Encabezados de solicitudes HTTP y comportamiento de CloudFront (personalizado y orígenes de Amazon S3)

En la siguiente tabla se indican los encabezados de solicitudes HTTP que puede reenviar a orígenes personalizados y de Amazon S3 (con las excepciones que se indican). Para cada encabezado, la tabla incluye información acerca de lo siguiente:

  • El comportamiento de CloudFront si no configura CloudFront para reenviar el encabezado a su origen, lo que hace que CloudFront almacene en caché los objetos en función de los valores de encabezado.

  • Si puede configurar CloudFront para almacenar en caché los objetos en función de los valores de ese encabezado.

    Puede configurar CloudFront para almacenar en caché los objetos en función de los valores de los encabezados Date y User-Agent, pero no lo recomendamos. Estos encabezados tienen muchos valores posibles y el almacenamiento en caché en función de sus valores podría hacer que CloudFront reenvíe una cantidad de solicitudes significativamente mayor a su origen.

Para obtener más información acerca del almacenamiento en caché en función de valores de encabezado, consulte Almacenamiento en caché de contenido en función de encabezados de solicitud.

Encabezado Comportamiento si no configura CloudFront para almacenar en caché en función de los valores de encabezados Se admite el almacenamiento en caché admite en función de valores de encabezados

Encabezados definidos por otros

Configuración de caché heredada: CloudFront reenvía los encabezados al origen.

Accept

CloudFront elimina el encabezado.

Accept-Charset

CloudFront elimina el encabezado.

Accept-Encoding

Si el valor contiene gzip o br, CloudFront reenvía un encabezado Accept-Encoding normalizado a su origen.

Para obtener más información, consulte Compatibilidad con la compresión y Ofrecimiento de archivos comprimidos.

Accept-Language

CloudFront elimina el encabezado.

Authorization

  • Solicitudes GET y HEAD: CloudFront elimina el campo del encabezado Authorization antes de reenviar la solicitud al origen.

  • Solicitudes OPTIONS: CloudFront elimina el campo de encabezado Authorization antes de enviar la solicitud al origen si configura CloudFront para almacenar en caché las respuestas a las solicitudes OPTIONS.

    CloudFront reenvía el campo de encabezado Authorization al origen si no configura CloudFront para almacenar en caché las respuestas a solicitudes OPTIONS.

  • Solicitudes DELETE, PATCH, POST y PUT: CloudFront no elimina el campo del encabezado antes de reenviar la solicitud al origen.

Cache-Control

CloudFront reenvía los encabezados al origen.

No

CloudFront-Forwarded-Proto

CloudFront no agrega el encabezado antes de reenviar la solicitud al origen.

Para obtener más información, consulte Configuración del almacenamiento en caché en función del protocolo de la solicitud.

CloudFront-Is-Desktop-Viewer

CloudFront no agrega el encabezado antes de reenviar la solicitud al origen.

Para obtener más información, consulte Configuración del almacenamiento en caché en función del tipo de dispositivo.

CloudFront-Is-Mobile-Viewer

CloudFront no agrega el encabezado antes de reenviar la solicitud al origen.

Para obtener más información, consulte Configuración del almacenamiento en caché en función del tipo de dispositivo.

CloudFront-Is-Tablet-Viewer

CloudFront no agrega el encabezado antes de reenviar la solicitud al origen.

Para obtener más información, consulte Configuración del almacenamiento en caché en función del tipo de dispositivo.

CloudFront-Viewer-Country

CloudFront no agrega el encabezado antes de reenviar la solicitud al origen.

Connection

CloudFront sustituye este encabezado por Connection: Keep-Alive antes de enviar la solicitud a su origen.

No

Content-Length

CloudFront reenvía los encabezados al origen.

No

Content-MD5

CloudFront reenvía los encabezados al origen.

Content-Type

CloudFront reenvía los encabezados al origen.

Cookie

Si configura CloudFront para reenviar cookies, reenviará el campo del encabezado Cookie a su origen. En caso contrario, CloudFront elimina el campo de encabezado Cookie. Para obtener más información, consulte Almacenamiento en caché de contenido en función de cookies.

No

Date

CloudFront reenvía los encabezados al origen.

Sí, pero no se recomienda

Expect

CloudFront elimina el encabezado.

From

CloudFront reenvía los encabezados al origen.

Host

CloudFront establece el valor en el nombre de dominio del origen que se asocia al objeto solicitado.

No puede almacenar en caché en función del encabezado Host para los orígenes de Amazon S3 o MediaStore.

Sí (personalizado)

No (S3 y MediaStore)

If-Match

CloudFront reenvía los encabezados al origen.

If-Modified-Since

CloudFront reenvía los encabezados al origen.

If-None-Match

CloudFront reenvía los encabezados al origen.

If-Range

CloudFront reenvía los encabezados al origen.

If-Unmodified-Since

CloudFront reenvía los encabezados al origen.

Max-Forwards

CloudFront reenvía los encabezados al origen.

No

Origin

CloudFront reenvía los encabezados al origen.

Pragma

CloudFront reenvía los encabezados al origen.

No

Proxy-Authenticate

CloudFront elimina el encabezado.

No

Proxy-Authorization

CloudFront elimina el encabezado.

No

Proxy-Connection

CloudFront elimina el encabezado.

No

Range

CloudFront reenvía los encabezados al origen. Para obtener más información, consulte Cómo CloudFront procesa las solicitudes parciales de un objeto (rango GET).

Sí de forma predeterminada

Referer

CloudFront elimina el encabezado.

Request-Range

CloudFront reenvía los encabezados al origen.

No

TE

CloudFront elimina el encabezado.

No

Trailer

CloudFront elimina el encabezado.

No

Transfer-Encoding

CloudFront reenvía los encabezados al origen.

No

Upgrade

CloudFront elimina el encabezado, a menos que haya establecido una conexión WebSocket.

No (excepto para las conexiones WebSocket)

User-Agent

CloudFront sustituye el valor de este campo de encabezado por Amazon CloudFront. Si desea que CloudFront almacene en caché el contenido en función del dispositivo del usuario, consulte Configuración del almacenamiento en caché en función del tipo de dispositivo.

Sí, pero no se recomienda

Via

CloudFront reenvía los encabezados al origen.

Warning

CloudFront reenvía los encabezados al origen.

X-Amz-Cf-Id

CloudFront agrega el encabezado a la solicitud del lector antes de reenviar la solicitud al origen. El valor de encabezado contiene una cadena cifrada que identifica la solicitud de forma única.

No

X-Edge-*

CloudFront elimina todos los encabezados X-Edge-*.

No

X-Forwarded-For

CloudFront reenvía los encabezados al origen. Para obtener más información, consulte Direcciones IP de clientes.

X-Forwarded-Proto

CloudFront elimina el encabezado.

No

X-HTTP-Method-Override

CloudFront elimina el encabezado.

X-Real-IP

CloudFront elimina el encabezado.

No

Versión de HTTP

CloudFront reenvía las solicitudes a su origen personalizado mediante HTTP/1.1.

Longitud máxima de una solicitud y de una URL

La longitud máxima de una solicitud, incluida la ruta, la cadena de consulta (si procede) y los encabezados, es 20 480 bytes.

CloudFront crea una URL a partir de la solicitud. La longitud máxima de esta URL es de 8 192 bytes.

Si una solicitud o una URL supera estos máximos, CloudFront devuelve el código de estado HTTP 413 (entidad de solicitud demasiado grande), al lector y, a continuación, interrumpe la conexión TCP con el lector.

Asociación de OCSP

Cuando un lector envía una solicitud de un objeto HTTPS, CloudFront o el lector deben confirmar con la autoridad de certificación (CA) que el certificado SSL del dominio no se ha revocado. La asociación de OCSP agiliza la validación de certificados al permitir a CloudFront validar el certificado y almacenar en caché la respuesta de la CA, por lo que el cliente no tiene por qué validar el certificado directamente con la CA.

La mejora en el rendimiento de la asociación de OCSP es más notoria cuando CloudFront recibe numerosas solicitudes HTTPS de objetos en el mismo dominio. Cada servidor en una ubicación periférica de CloudFront debe enviar una solicitud de validación independiente. Cuando CloudFront recibe una gran cantidad de solicitudes HTTPS para el mismo dominio, cada servidor de la ubicación periférica obtiene pronto una respuesta de la CA que puede asociar a un paquete en el protocolo de enlace de SSL; cuando el lector considera que el certificado es válido, CloudFront puede ofrecer el objeto solicitado. Si la distribución no recibe mucho tráfico en una ubicación periférica de CloudFront, es más probable que las nuevas solicitudes se dirijan a un servidor que todavía no haya validado el certificado con la CA. En ese caso, el lector realiza el paso de validación por separado y el servidor de CloudFront ofrece el objeto. Este servidor de CloudFront también envía una solicitud de validación a la CA, por lo que la próxima vez que recibe una solicitud que incluye el mismo nombre de dominio, cuenta con una respuesta de validación de la CA.

Conexiones persistentes

Cuando CloudFront obtiene una respuesta de su origen, intenta mantener la conexión durante varios segundos en caso de que otra solicitud llegue durante ese periodo. Garantizar una conexión persistente ahorra el tiempo necesario para restablecer la conexión TCP y realizar otro protocolo de enlace TLS para solicitudes posteriores.

Para obtener más información, incluido el modo de configurar la duración de las conexiones persistentes, consulte Tiempo de espera de keep-alive (solo orígenes personalizados) en la sección Referencia de configuración de la distribución.

Protocolos

CloudFront reenvía solicitudes HTTP o HTTPS al servidor de origen en función de lo siguiente:

  • El protocolo de la solicitud que el lector envía a CloudFront, ya sea HTTP o HTTPS.

  • El valor del campo Origin Protocol Policy (Política de protocolo de origen) en la consola de CloudFront o, si está utilizando la API de CloudFront, el elemento OriginProtocolPolicy del tipo complejo DistributionConfig. En la consola de CloudFront, las opciones son HTTP Only (Solo HTTP), HTTPS Only (Solo HTTPS) y Match Viewer (Coincidir con lector).

Si especifica HTTP Only (Solo HTTP) o HTTPS Only (Solo HTTPS), CloudFront reenvía las solicitudes al servidor de origen mediante el protocolo especificado, independientemente del protocolo de la solicitud del lector.

Si especifica Match Viewer (Coincidir con lector), CloudFront reenvía las solicitudes al servidor de origen mediante el protocolo especificado en la solicitud del lector. Tenga en cuenta que CloudFront almacena en caché el objeto solo una vez, incluso si los lectores realizan solicitudes a través de los protocolos HTTP y HTTPS.

importante

Si CloudFront reenvía una solicitud al origen mediante el protocolo HTTPS, y si el servidor de origen devuelve un certificado no válido o autofirmado, CloudFront interrumpe la conexión TCP.

Para obtener más información acerca de cómo actualizar una distribución desde la consola de CloudFront, consulte Actualizar una distribución. Para obtener información acerca de cómo actualizar una distribución mediante la API de CloudFront, consulte UpdateDistribution en la Referencia de la API de Amazon CloudFront.

Cadenas de consulta

Puede configurar si CloudFront reenvía parámetros de cadenas de consulta a su origen. Para obtener más información, consulte Almacenamiento en caché de contenido en función de parámetros de cadenas de consulta.

Tiempo de espera e intentos de conexión de origen

Origin connection timeout (Tiempo de espera de conexión de origen) es el número de segundos que CloudFront espera al intentar establecer una conexión con el origen.

Origin connection attempts (Intentos de conexión de origen) es el número de veces que CloudFront intenta conectarse al origen.

Juntos, estos parámetros determinan cuánto tiempo intenta CloudFront conectarse al origen antes de realizar una conmutación al origen secundario (en el caso de un grupo de orígenes) o devolver una respuesta de error al lector. De forma predeterminada, CloudFront espera hasta 30 segundos (3 intentos de 10 segundos cada uno) antes de intentar conectarse al origen secundario o devolver una respuesta de error. Puede reducir este tiempo si especifica menos intentos, un tiempo de espera de conexión más corto o ambas opciones.

Para obtener más información, consulte Control de tiempos de espera e intentos de origen.

Tiempo de espera de respuesta de origen

El tiempo de espera de respuesta del origen, también conocido como tiempo de espera de lectura del origen y tiempo de espera de solicitud al origen, se aplica a los dos siguientes:

  • El periodo de tiempo, en segundos, que CloudFront espera una respuesta después de enviar una solicitud al origen.

  • El periodo de tiempo, en segundos, que CloudFront espera después de recibir un paquete de una respuesta del origen y antes de recibir el paquete siguiente.

El comportamiento de CloudFront depende del método HTTP en la solicitud del lector:

  • Solicitudes GET y HEAD: si el origen no responde o deja de responder durante el tiempo de espera de la respuesta, CloudFront interrumpe la conexión. Si el número especificado de intentos de conexión de origen es superior a 1, CloudFront intenta obtener de nuevo una respuesta completa. CloudFront lo intenta hasta tres veces, según lo determinado por el valor de la opciónOrigin connection attempts (Intentos de conexión de origen). Si el origen no responde en el último intento, CloudFront no vuelve a intentarlo hasta que recibe una nueva solicitud de contenido en el mismo origen.

  • Solicitudes DELETE, OPTIONS, PATCH, PUT y POST: si el origen no responde en 30 segundos, CloudFront interrumpe la conexión y no vuelve a intentar ponerse en contacto con el origen. El cliente puede volver a enviar la solicitud en caso de que sea necesario.

Para obtener más información, incluido el modo de configurar el tiempo de espera de la respuesta del origen, consulte Tiempo de espera de respuesta (solo orígenes personalizados).

Solicitudes simultáneas del mismo objeto (contracción de solicitudes)

Cuando una ubicación periférica de CloudFront recibe una solicitud de un objeto y este no se encuentra en la caché o el objeto ha caducado, CloudFront envía inmediatamente la solicitud al origen. Sin embargo, si hay solicitudes simultáneas del mismo objeto, es decir, si llegan solicitudes adicionales del mismo objeto (con la misma clave de caché) a la ubicación periférica antes de que CloudFront reciba la respuesta a la primera solicitud, CloudFront se pone en pausa antes de reenviar las solicitudes adicionales al origen. Esta breve pausa ayuda a reducir la carga en el origen. CloudFront envía la respuesta de la solicitud original a todas las solicitudes que recibió mientras estaba en pausa. Esto se llama contracción de solicitudes. En los registros de CloudFront, la primera solicitud se identifica como Miss en el campo x-edge-result-type, y las solicitudes contraídas se identifican como Hit. Para obtener más información sobre los registros de CloudFront, consulte Registro de funciones de CloudFront y perimetrales.

CloudFront solo contrae las solicitudes que comparten clave de caché. Si las solicitudes adicionales no son idénticas, porque, por ejemplo, ha configurado CloudFront para almacenar en caché en función de los encabezados de solicitudes o las cadenas de consulta, CloudFront reenvía todas las solicitudes únicas a su origen.

Si quiere evitar la contracción de todas las solicitudes, puede utilizar la política de caché administrada CachingDisabled, que también impide el almacenamiento en caché. Para obtener más información, consulte Uso de políticas de caché administradas.

Si quiere evitar la contracción de la solicitud para objetos específicos, puede establecer el TTL mínimo para el comportamiento de la caché en 0 y configurar el origen para enviar Cache-Control: private, Cache-Control: no-store, Cache-Control: no-cache, Cache-Control: max-age=0 o Cache-Control: s-maxage=0. Estas configuraciones aumentarán la carga en el origen e introducirán latencia adicional para las solicitudes simultáneas que se detienen mientras CloudFront espera la respuesta a la primera solicitud.

importante

Actualmente, CloudFront no admite la contracción de solicitudes si se habilita el reenvío de cookies en la política de caché, la política de solicitudes de origen o la configuración de caché antigua.

Encabezado User-Agent

Si desea que CloudFront almacene en caché diversas versiones de sus objetos según el dispositivo que el usuario utilice para ver su contenido, le recomendamos que configure CloudFront para que reenvíe uno o varios de los siguientes encabezados a su origen personalizado:

  • CloudFront-Is-Desktop-Viewer

  • CloudFront-Is-Mobile-Viewer

  • CloudFront-Is-SmartTV-Viewer

  • CloudFront-Is-Tablet-Viewer

En función del valor del encabezado User-Agent, CloudFront establece el valor de estos encabezados en true o false antes de reenviar la solicitud al origen. Si un dispositivo entra en más de una categoría, más de un valor podría ser true. Por ejemplo, en el caso de algunas tabletas, CloudFront podría establecer tanto CloudFront-Is-Mobile-Viewer como CloudFront-Is-Tablet-Viewer en true. Para obtener más información acerca de la configuración de CloudFront para almacenar en caché en función de los encabezados de solicitud, consulte Almacenamiento en caché de contenido en función de encabezados de solicitud.

Puede configurar CloudFront para almacenar en caché los objetos en función de los valores del encabezado User-Agent, pero no lo recomendamos. El encabezado User-Agent tiene muchos valores posibles y el almacenamiento en caché en función de esos valores podría hacer que CloudFront reenvíe una cantidad de solicitudes significativamente mayor a su origen.

Si no configura CloudFront para almacenar en caché los objetos en función de los valores del encabezado User-Agent, CloudFront agrega un encabezado User-Agent con el siguiente valor antes de reenviar una solicitud al origen:

User-Agent = Amazon CloudFront

CloudFront agrega este encabezado independientemente de si la solicitud del lector incluye un encabezado User-Agent. Si la solicitud del lector incluye un encabezado User-Agent, CloudFront lo elimina.

Cómo procesa CloudFront las respuestas de su origen personalizado

Obtenga información sobre cómo procesa CloudFront las respuestas de su origen personalizado.

100 Continue respuestas

Su origen no puede enviar más de una respuesta 100-Continue a CloudFront. Después de la primera respuesta 100-Continue, CloudFront espera una respuesta HTTP 200 OK. Si el origen envía otra respuesta 100-Continue después de la primera, CloudFront devolverá un error.

Almacenamiento en caché

Solicitudes canceladas

Si un objeto no está en la caché perimetral y un lector termina una sesión (por ejemplo, cierra un navegador) después de que CloudFront obtiene el objeto solicitado del origen, pero antes de que pueda entregarlo, CloudFront no almacena el objeto en la caché de la ubicación periférica.

Negociación de contenido

Si el origen devuelve Vary:* en la respuesta y si el valor de Minimum TTL (TTL mínimo) para el comportamiento de la caché correspondiente es 0, CloudFront almacena en caché el objeto, pero igualmente reenvía cada solicitud posterior del objeto al origen para confirmar que la caché contiene la última versión de dicho objeto. CloudFront no incluye encabezados condicionales, como If-None-Match o If-Modified-Since. Por tanto, el origen devuelve el objeto a CloudFront como respuesta a cada solicitud.

Si el origen devuelve Vary:* en la respuesta y si el valor de TTL mínimo para el comportamiento de la caché correspondiente es cualquier otro valor, CloudFront procesa el encabezado Vary tal y como se describe en Encabezados de respuesta HTTP que CloudFront elimina o reemplaza.

Cookies

Si habilita cookies para un comportamiento de la caché y si el origen devuelve las cookies con un objeto, CloudFront almacena en la caché tanto el objeto como las cookies. Tenga en cuenta que este reduce la capacidad de almacenamiento en caché para un objeto. Para obtener más información, consulte Almacenamiento en caché de contenido en función de cookies.

Conexiones TCP interrumpidas

Si la conexión TCP entre CloudFront y el origen se interrumpe al mismo tiempo que el origen devuelve un objeto a CloudFront, el comportamiento de CloudFront depende de si el origen incluye un encabezado Content-Length en la respuesta:

  • Encabezado Content-Length: CloudFront devuelve el objeto al lector mientras lo obtiene del origen. Sin embargo, si el valor del encabezado Content-Length no coincide con el tamaño del objeto, CloudFront no lo almacena en caché.

  • Transfer-Encoding: Chunked: CloudFront devuelve el objeto al lector mientras lo obtiene del origen. Sin embargo, si la respuesta fragmentada no está completa, CloudFront no almacena el objeto en la caché.

  • Encabezado No Content-Length: CloudFront devuelve el objeto al lector y lo almacena en la caché, pero el objeto puede no estar completo. Sin un encabezado Content-Length, CloudFront no puede determinar si la conexión TCP se interrumpió de forma accidental o intencionadamente.

Le recomendamos que configure su servidor HTTP para agregar un encabezado Content-Length y así evitar que CloudFront almacene en caché objetos parciales.

Encabezados de respuesta HTTP que CloudFront elimina o reemplaza

CloudFront elimina o actualiza los siguientes campos de encabezado antes de reenviar la respuesta desde su origen al lector:

  • Set-Cookie: si configura CloudFront para reenviar cookies, reenviará el campo del encabezado Set-Cookie a los clientes. Para obtener más información, consulte Almacenamiento en caché de contenido en función de cookies.

  • Trailer

  • Transfer-Encoding: si el origen devuelve este campo de encabezado, CloudFront establece el valor en chunked antes de devolver la respuesta al lector.

  • Upgrade

  • Vary: tenga en cuenta lo siguiente:

    • Si configura CloudFront para reenviar cualquiera de los encabezados específicos del dispositivo al origen (CloudFront-Is-Desktop-Viewer, CloudFront-Is-Mobile-Viewer, CloudFront-Is-SmartTV-Viewer, CloudFront-Is-Tablet-Viewer) y configura su origen para devolver Vary:User-Agent a CloudFront, CloudFront devuelve Vary:User-Agent al lector. Para obtener más información, consulte Configuración del almacenamiento en caché en función del tipo de dispositivo.

    • Si configura su origen para incluir bien Accept-Encoding o Cookie en el encabezado Vary, CloudFront incluye los valores en la respuesta al lector.

    • Si configura CloudFront para que reenvíe una lista blanca de encabezados al origen y, además, configura el origen para devolver los nombres de encabezado a CloudFront en el encabezado Vary (por ejemplo, Vary:Accept-Charset,Accept-Language), CloudFront devuelve el encabezado Vary con ese valor al lector.

    • Para obtener más información acerca de cómo CloudFront procesa un valor de * en el encabezado Vary, consulte Negociación de contenido.

    • Si configura su origen para incluir cualquier otro valor en el encabezado Vary, CloudFront eliminará dichos valores antes de devolver la respuesta al lector.

  • Via: CloudFront establece el valor en lo siguiente en la respuesta al lector:

    Via: versión-http cadena-alfanumérica.cloudfront.net (CloudFront)

    Por ejemplo, el valor será similar a lo siguiente:

    Via: 1.1 1026589cc7887e7a0dc7827b4example.cloudfront.net (CloudFront)

Tamaño máximo de archivo que se puede almacenar en caché

El tamaño máximo de un cuerpo de respuesta que CloudFront guarda en su caché es de 50 GB. Eso incluye respuestas transferidas en fragmentos que no especifican el valor de encabezado Content-Length.

Puede utilizar CloudFront para almacenar en caché un objeto superior a este tamaño mediante solicitudes de rango para solicitar los objetos en partes de 50 GB o menos cada una. CloudFront almacena en caché estas partes porque cada una de ellas es de 50 GB o menos. Una vez que el lector recupera todas las partes del objeto, puede reconstruir el objeto original de mayor tamaño. Para obtener más información, consulte Uso de solicitudes de rango para almacenar en caché objetos grandes.

Origen no disponible

Si el servidor de origen no está disponible y CloudFront obtiene una solicitud de un objeto que se encuentra en la caché perimetral, pero que ha caducado (por ejemplo, porque el periodo especificado en la política Cache-Control max-age ya ha transcurrido), CloudFront ofrece esa versión caducada del objeto o una página de error personalizada. Para obtener más información sobre el comportamiento de CloudFront cuando se han configurado páginas de error personalizadas, consulte Cómo CloudFront procesa los errores cuando las páginas de error personalizadas están configuradas.

En algunos casos, un objeto poco solicitado es desalojado y deja de estar disponible en la caché perimetral. CloudFront no puede servir un objeto que haya sido desalojado.

Redireccionamientos

Si cambia la ubicación de un objeto en el servidor de origen, puede configurar su servidor web para redirigir las solicitudes a la nueva ubicación. Después de configurar el redireccionamiento, la primera vez que un lector envía una solicitud del objeto, CloudFront envía la solicitud al origen y el origen responde con un redireccionamiento (por ejemplo, 302 Moved Temporarily). CloudFront almacena en caché el redireccionamiento y lo devuelve al lector. CloudFront no sigue el redireccionamiento.

Puede configurar su servidor web para redirigir las solicitudes a una de las siguientes ubicaciones:

  • La nueva URL del objeto en el servidor de origen. Cuando el lector sigue el redireccionamiento a la nueva URL, el lector elude CloudFront y va directamente al origen. Por tal motivo, le recomendamos que no redirija las solicitudes a la nueva URL del objeto en el origen.

  • La nueva URL de CloudFront para el objeto. Cuando el lector envía la solicitud que contiene la nueva URL de CloudFront, CloudFront obtiene el objeto de la nueva ubicación de su origen, lo almacena en la caché de la ubicación periférica y lo devuelve al lector. Las solicitudes posteriores del objeto serán atendidas por la ubicación periférica. Esto evita la latencia y carga asociadas a la solicitud del objeto al origen por parte de los espectadores. Sin embargo, cada nueva solicitud del objeto implicará cargos por concepto de dos solicitudes a CloudFront.

Encabezado Transfer-Encoding

CloudFront admite únicamente el valor chunked del encabezado Transfer-Encoding. Si el origen devuelve Transfer-Encoding: chunked, CloudFront devuelve el objeto al cliente tan pronto como lo recibe la ubicación periférica y lo almacena en caché en formato fragmentado para solicitudes posteriores.

Si un lector envía una solicitud Range GET y el origen devuelve Transfer-Encoding: chunked, CloudFront devuelve el objeto entero al lector en lugar del intervalo solicitado.

Le recomendamos utilizar codificación fragmentada si la longitud de su respuesta no puede ser predeterminada. Para obtener más información, consulte Conexiones TCP interrumpidas.