¿Cómo CloudFront procesa y almacena en caché los códigos de estado HTTP 4xx y 5xx de tu origen? - 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.

¿Cómo CloudFront procesa y almacena en caché los códigos de estado HTTP 4xx y 5xx de tu origen?

Cuando CloudFront solicita un objeto desde su depósito de Amazon S3 o servidor de origen personalizado, su origen a veces devuelve un código de estado HTTP 4xx o 5xx, lo que indica que se ha producido un error. CloudFront el comportamiento depende de:

  • Si ha configurado páginas de error personalizadas.

  • Si ha configurado durante cuánto tiempo desea CloudFront almacenar en caché las respuestas de error de su origen (error de almacenamiento en caché de TTL como mínimo).

  • El código del estado.

  • En el caso de los códigos de estado 5xx, indica si el objeto solicitado se encuentra actualmente en la CloudFront memoria caché perimetral.

  • Para algunos códigos de estado 4xx, si el origen devuelve un encabezado Cache-Control max-age o Cache-Control s-maxage.

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

Si el origen no responde, se agota el tiempo de espera de la CloudFront solicitud al origen, lo que se considera un error HTTP 5xx procedente del origen, aunque el origen no haya respondido con ese error. En ese escenario, CloudFront sigue publicando contenido en caché. Para obtener más información, consulte Origen no disponible.

Si ha habilitado el registro, CloudFront escribe los resultados en los registros independientemente del código de estado HTTP.

Para obtener más información sobre las funciones y opciones relacionadas con el mensaje de error devuelto CloudFront, consulte lo siguiente:

Cómo CloudFront procesa los errores cuando ha configurado páginas de error personalizadas

Si ha configurado páginas de error personalizadas, el CloudFront comportamiento depende de si el objeto solicitado está en la memoria caché perimetral.

El objeto solicitado no está en la caché perimetral

CloudFront sigue intentando obtener el objeto solicitado de su origen cuando se cumplen todas las condiciones siguientes:

CloudFront hace lo siguiente:

  1. En la memoria caché CloudFront perimetral que recibió la solicitud de visualización, CloudFront comprueba la configuración de distribución y obtiene la ruta de la página de error personalizada que corresponde al código de estado que devolvió el origen.

  2. CloudFront busca el primer comportamiento de la caché de la distribución que tenga un patrón de ruta que coincida con la ruta de la página de error personalizada.

  3. La ubicación de CloudFront borde envía una solicitud de página de error personalizada al origen especificado en el comportamiento de la caché.

  4. El origen devuelve la página de error personalizada a la ubicación periférica.

  5. CloudFront devuelve la página de error personalizada al espectador que realizó la solicitud y también la guarda en caché durante el máximo de los siguientes casos:

    • La cantidad de tiempo especificado por el TTL mínimo de almacenamiento en caché de errores (10 segundos de forma predeterminada)

    • El periodo de tiempo especificado por un encabezado Cache-Control max-age o un encabezado Cache-Control s-maxage que devuelve el origen cuando la primera solicitud generó el error

  6. Una vez transcurrido el tiempo de almacenamiento en caché (determinado en el paso 5), vuelve a CloudFront intentar obtener el objeto solicitado reenviando otra solicitud a su origen. CloudFront continúa reintentándolo a los intervalos especificados por el error al almacenar en caché el TTL mínimo.

El objeto solicitado está en la caché perimetral

CloudFront continúa publicando el objeto que se encuentra actualmente en la memoria caché perimetral cuando se cumplen todas las condiciones siguientes:

  • Un espectador solicita un objeto.

  • El objeto se encuentra en la memoria caché de borde, pero ha caducado

  • Su origen devuelve un código de estado HTTP 5xx en lugar de devolver un código 304 (No modificado) o una versión actualizada del objeto.

CloudFront hace lo siguiente:

  1. Si tu origen devuelve un código de estado 5xx, CloudFront entrega el objeto aunque haya caducado. Mientras dure el error, almacenando en caché el TTL mínimo, CloudFront seguirá respondiendo a las solicitudes de los espectadores distribuyendo el objeto desde la caché perimetral.

    Si el origen devuelve un código de estado 4xx, CloudFront devuelve el código de estado al espectador en lugar del objeto solicitado.

  2. Una vez transcurrido el error al almacenar en caché el TTL mínimo, vuelve a CloudFront intentar obtener el objeto solicitado reenviando otra solicitud a tu origen. Ten en cuenta que si el objeto no se solicita con frecuencia, es CloudFront posible que se desaloje de la memoria caché perimetral mientras el servidor de origen siga devolviendo 5 veces más respuestas. Para obtener información sobre cuánto tiempo permanecen los objetos en las cachés CloudFront perimetrales, consulte. Administración de cuánto tiempo se mantiene el contenido en una caché (vencimiento)

Cómo CloudFront procesa los errores cuando no ha configurado páginas de error personalizadas

Si no ha configurado páginas de error personalizadas, el CloudFront comportamiento depende de si el objeto solicitado está en la memoria caché perimetral.

El objeto solicitado no está en la caché perimetral

CloudFront sigue intentando obtener el objeto solicitado de su origen cuando se cumplen todas las condiciones siguientes:

CloudFront hace lo siguiente:

  1. CloudFront devuelve el código de estado 4xx o 5xx al espectador y también almacena en caché el código de estado en la memoria caché perimetral que recibió la solicitud durante el máximo de los siguientes casos:

    • La cantidad de tiempo especificado por el TTL mínimo de almacenamiento en caché de errores (10 segundos de forma predeterminada)

    • El periodo de tiempo especificado por un encabezado Cache-Control max-age o un encabezado Cache-Control s-maxage que devuelve el origen cuando la primera solicitud generó el error

  2. Durante el tiempo de almacenamiento en caché (determinado en el paso 1), CloudFront responde a las solicitudes posteriores del espectador sobre el mismo objeto con el código de estado 4xx o 5xx almacenado en caché.

  3. Una vez transcurrido el tiempo de almacenamiento en caché (determinado en el paso 1), vuelve a CloudFront intentar obtener el objeto solicitado reenviando otra solicitud a su origen. CloudFront continúa reintentándolo a los intervalos especificados por el error al almacenar en caché el TTL mínimo.

El objeto solicitado está en la caché perimetral

CloudFront continúa publicando el objeto que se encuentra actualmente en la memoria caché perimetral cuando se cumplen todas las condiciones siguientes:

  • Un espectador solicita un objeto.

  • El objeto se encuentra en la memoria caché de borde, pero ha caducado

  • Su origen devuelve un código de estado HTTP 5xx en lugar de devolver un código 304 (No modificado) o una versión actualizada del objeto.

CloudFront hace lo siguiente:

  1. Si tu origen devuelve un código de error de 5xx CloudFront , entrega el objeto aunque haya caducado. Mientras dure el error, almacenando en caché el TTL mínimo (10 segundos de forma predeterminada), CloudFront seguirá respondiendo a las solicitudes de los espectadores publicando el objeto desde la memoria caché perimetral.

    Si el origen devuelve un código de estado 4xx, CloudFront devuelve el código de estado al espectador en lugar del objeto solicitado.

  2. Una vez transcurrido el error al almacenar en caché el TTL mínimo, vuelve a CloudFront intentar obtener el objeto solicitado reenviando otra solicitud a tu origen. Ten en cuenta que si el objeto no se solicita con frecuencia, es CloudFront posible que se desaloje de la memoria caché perimetral mientras el servidor de origen siga devolviendo 5 veces más respuestas. Para obtener información sobre cuánto tiempo permanecen los objetos en las cachés CloudFront perimetrales, consulte. Administración de cuánto tiempo se mantiene el contenido en una caché (vencimiento)

Códigos de estado HTTP 4xx y 5xx que se almacenan en caché CloudFront

CloudFront almacena en caché los códigos de estado HTTP 4xx y 5xx devueltos por el origen, en función del código de estado específico que se devuelva y de si el origen devuelve encabezados específicos en la respuesta.

Códigos de estado HTTP 4xx y 5xx que siempre se almacenan en caché CloudFront

CloudFront siempre almacena en caché los siguientes códigos de estado HTTP 4xx y 5xx devueltos por su origen. Si has configurado una página de error personalizada para un código de estado HTTP, guarda en CloudFront caché la página de error personalizada.

404

no encontrado

414

URI de solicitud demasiado grande

500

Internal Server Error

501

No implementado

502

Puerta de enlace incorrecta

503

Servicio no disponible

504

Tiempo de espera de puerta de enlace agotado

Códigos de estado HTTP 4xx que se almacenan en CloudFront caché en función de los encabezados Cache-Control

CloudFront solo almacena en caché los siguientes códigos de estado HTTP 4xx devueltos por tu origen si tu origen devuelve un encabezado o. Cache-Control max-age Cache-Control s-maxage Si has configurado una página de error personalizada para uno de estos códigos de estado HTTP y tu origen devuelve uno de los encabezados de control de caché, guarda en caché la página de error personalizadaCloudFront .

400

solicitud errónea

403

Prohibido

405

método no permitido

412

Condición previa con error

415

Tipo de medio incompatible