He configurado el almacenamiento en caché de objetos personalizado en mi distribución de CloudFront. ¿Por qué mi distribución utiliza la configuración de caché de mi origen?

6 minutos de lectura
0

Mi distribución de Amazon CloudFront tiene configurado un comportamiento de caché con el almacenamiento en caché de objetos personalizado, pero mi distribución sigue utilizando la configuración de caché de mi origen. ¿Cómo puedo solucionar este problema?

Descripción breve

Al personalizar el almacenamiento en caché de objetos, se configura el TTL predeterminado, el TTL mínimo, y el TTL máximo. CloudFront utiliza estos parámetros en función de si el origen devuelve un encabezado de almacenamiento en caché:

  • Si el origen no devuelve un encabezado de almacenamiento en caché, la distribución utiliza el TTL predeterminado.
  • Si el origen devuelve un encabezado de almacenamiento en caché inferior al TTL mínimo, la distribución utiliza el TTL mínimo.
  • Si el origen devuelve un encabezado de almacenamiento en caché superior al TTL máximo, la distribución utiliza el TTL máximo.

Nota: La respuesta al cliente contiene los encabezados de almacenamiento en caché del origen, incluso si CloudFront almacena en caché la respuesta basándose en el TTL mínimo o el TTL máximo. Cualquier caché privada, como un navegador o un proxy, puede utilizar el encabezado de almacenamiento en caché del origen.

Si su distribución de CloudFront no almacena en caché en función de los valores personalizados que ha establecido en los comportamientos de la caché, compruebe el origen. Compruebe si el origen tiene encabezados de almacenamiento en caché en conflicto.

Resolución

Para comprobar si los encabezados de almacenamiento en caché de origen entran en conflicto con el almacenamiento en caché de objetos personalizado de su distribución, siga estas instrucciones en función de los problemas que vea:

El TTL mínimo y el TTL predeterminado están configurados en 0, pero aún hay aciertos de CloudFront

Si hay aciertos de CloudFront incluso cuando el URI de una solicitud coincide con una ruta de comportamiento de caché con el TTL mínimo y el TTL predeterminado establecidos en 0, compruebe la respuesta de CloudFront. Compruebe si la respuesta muestra «Hit from cloudfront» o «RefreshHit from cloudfront» como encabezado de X-Cache:

< HTTP/1.1 200 OK
< Content-Type: text/html
< Content-Length: 437
< Connection: keep-alive
< Date: Sat, 03 Feb 2018 19:26:45 GMT
< Last-Modified: Sat, 03 Feb 2018 19:25:24 GMT
< ETag: "example12345abcdefghijklmno54321"
< Cache-Control: max-age=300, Public
< Accept-Ranges: bytes
< Server: AmazonS3
< Age: 14
< X-Cache: Hit from cloudfront

Si el encabezado de X-Cache es «Hit from cloudfront» o «RefreshHit from cloudfront», la solicitud se ha atendido desde la caché de la ubicación periférica.

Revise el resto de la respuesta para los encabezados Cache-Control, Expires y Age. Los encabezados Cache-Control y Expires son encabezados de almacenamiento en caché conductual que indican a la caché intermediaria (CloudFront) o privada (navegador) cómo almacenar una solicitud. El encabezado Age muestra cuánto tiempo ha estado en caché una respuesta.

Si el valor máximo de antigüedad de Cache-Control es mayor que el valor de Age, la respuesta almacenada en caché se considera nueva y se proporciona desde la ubicación periférica. Si la fecha de Expires aún es futura, la respuesta almacenada en caché también se considera nueva. Esto ocurre incluso si la ruta de comportamiento de la caché tiene el TTL mínimo y el TTL predeterminado configurados en 0.

El TTL máximo y el TTL predeterminado son superiores a 0, pero hay ausencias en CloudFront

Si hay ausencias en CloudFront incluso si el URI de una solicitud coincide con una ruta de comportamiento de caché con el TTL máximo y el TTL predeterminado configurados en valores superiores a 0, compruebe la respuesta de CloudFront. Compruebe si la respuesta muestra «Miss from cloudfront» como encabezado de X-Cache:

< HTTP/1.1 200 OK
< Content-Type: text/html
< Content-Length: 437
< Connection: keep-alive
< Date: Sat, 03 Feb 2018 19:26:45 GMT
< Last-Modified: Sat, 03 Feb 2018 19:25:24 GMT
< ETag: "example12345abcdefghijklmno54321"
< Cache-Control: no-cache, no-store
< Accept-Ranges: bytes
< Server: AmazonS3
< X-Cache: Miss from cloudfront

Si el encabezado de X-Cache es «Miss from cloudfront», significa que la solicitud se ha recuperado del origen y la caché no la ha atendido.

Revise el encabezado de Cache-Control en la respuesta. Si el valor de Cache-Control es «no-store», el encabezado indica a CloudFront que no almacene la respuesta en caché. Si el valor de Cache-Control es «no-cache», el encabezado indica a CloudFront que verifique el origen antes de devolver una respuesta en caché. Estas directivas sustituyen las configuraciones de TTL máximo y TTL predeterminado de CloudFront.

**Nota:**Las respuestas que no provengan de la caché no tendrán un encabezado Age.

CloudFront almacena en caché las respuestas de error

CloudFront reenvía de forma predeterminada las respuestas de error desde el origen al cliente. Además, CloudFront almacena en caché la respuesta de error del origen durante 10 segundos por defecto.

Si la respuesta de error del origen contiene un encabezado Cache-Control, CloudFront almacena en caché el error con el TTL correspondiente en lugar de los 5 minutos predeterminados. CloudFront no almacena en caché sus propias respuestas de error, a menos que se especifique lo contrario en una respuesta de error personalizada.

Para determinar si la respuesta de error proviene del origen o de CloudFront, compruebe el encabezado del servidor. Para determinar si el error es una respuesta almacenada en caché, compruebe el encabezado Age, ya que la respuesta almacenada en caché incluye un encabezado Age.

El siguiente ejemplo es un error de un origen de Amazon Simple Storage Service (Amazon S3) que es una respuesta en caché:

< HTTP/1.1 403 Forbidden
< Content-Type: application/xml
< Transfer-Encoding: chunked
< Connection: keep-alive
< Date: Sat, 03 Feb 2018 21:07:51 GMT
< Server: AmazonS3
< Age: 12
< X-Cache: Error from cloudfront

El siguiente ejemplo es un error de CloudFront que no es una respuesta almacenada en caché:

< HTTP/1.1 403 Forbidden
< Server: CloudFront
< Date: Sat, 03 Feb 2018 21:14:53 GMT
< Content-Type: text/xml
< Content-Length: 146
< Connection: keep-alive
< X-Cache: Error from cloudfront

Después de identificar los encabezados de almacenamiento en caché en conflicto, actualice el origen

Después de determinar qué encabezados de almacenamiento en caché reemplazan el almacenamiento en caché de objetos personalizado de su distribución, siga estos pasos:

  1. Identifique en qué parte de la configuración del servidor web se aplican los encabezados.
  2. Elimine las líneas en las que se aplican los encabezados.
  3. Reinicie el servidor.
  4. Pruebe su origen directamente para asegurarse de que los encabezados de almacenamiento en caché ya no aparezcan en la respuesta.
  5. Ejecute una invalidación en toda su distribución de CloudFront para aplicar el cambio.

Información relacionada

Almacenamiento en caché de contenido en función de encabezados de solicitud

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años