Configurar el comportamiento del almacenamiento en caché

Media CDN sirve contenido lo más cerca posible de los usuarios mediante la infraestructura de almacenamiento en caché perimetral mundial de Google para almacenar contenido en caché y reducir la carga de la infraestructura de origen.

Puedes controlar cómo se almacena en caché el contenido de cada ruta. De esta forma, puedes optimizar el comportamiento en función del tipo de contenido, los atributos de la solicitud del cliente y tus requisitos de actualización.

Almacenabilidad en caché

En las siguientes secciones se describe qué respuestas almacena en caché Media CDN y cómo mejorar la descarga de la caché.

Comportamiento predeterminado del almacenamiento en caché

De forma predeterminada, los siguientes ajustes relacionados con la caché se aplican a cada servicio de caché perimetral:

  • Modo de caché predeterminado de CACHE_ALL_STATIC:

    • Respeta las directivas de caché de origen, como Cache-Control o Expires, hasta un TTL máximo configurable.
    • Almacena en caché automáticamente los tipos de contenido multimedia estático con un TTL predeterminado de 3600 s si no hay directivas de caché de origen.
    • Almacena en caché los códigos de estado HTTP 200, 204 y 206 (el almacenamiento en caché negativo no está habilitado).
  • No almacena en caché las respuestas que tienen directivas de control de caché no-store o private, o que no se pueden almacenar en caché de otro modo.

Las respuestas que no son contenido estático o que no tienen directivas de caché válidas no se almacenan en caché a menos que se configure explícitamente. Para saber cómo anular el comportamiento predeterminado, consulta la documentación sobre los modos de caché .

El comportamiento predeterminado es equivalente al siguiente cdnPolicy. Las rutas sin un cdnPolicy configurado explícitamente se comportan como si tuvieran la siguiente configuración:

cdnPolicy:
  cacheMode: CACHE_ALL_STATIC
  defaultTtl: 3600s
  cacheKeyPolicy:
    includeProtocol: false
    excludeHost: false
    excludeQueryString: false
  signedRequestMode: DISABLED
  negativeCaching: false

Respuestas que se pueden almacenar en caché

Una respuesta almacenable en caché es una respuesta HTTP que Media CDN puede almacenar y recuperar rápidamente, lo que permite que los tiempos de carga sean más rápidos. No todas las respuestas HTTP se pueden almacenar en caché.

Puedes configurar modos de caché para cada ruta y anular este comportamiento (por ejemplo, usando el modo de caché CACHE_ALL_STATIC para almacenar en caché tipos de contenido multimedia comunes), aunque el origen no defina una directiva de control de caché en la respuesta.

Las solicitudes y respuestas que cumplen los criterios definidos en respuestas no almacenables en caché tienen prioridad sobre la capacidad de almacenamiento en caché.

En la siguiente tabla se describen los requisitos para almacenar en caché respuestas HTTP concretas. Tanto las respuestas de GET como las de HEAD deben cumplir estos requisitos.

Atributo HTTP Requisitos
Código de estado El código de estado de la respuesta debe ser uno de los siguientes: 200, 203, 204, 206, 300, 301, 302, 307, 308, 400, 403, 404, 405, 410, 451, 500, 501, 502, 503 o 504.
Métodos HTTP GET y HEAD
Encabezados de solicitud La mayoría de las directivas de solicitud de almacenamiento en caché se ignoran. Para obtener más información, consulta las directivas de control de caché.
Encabezados de respuesta

Contiene una directiva de almacenamiento en caché de HTTP válida, como Cache-Control: max-age=3600, public.

Tiene un modo de caché que almacena ese contenido en caché o tiene un encabezado Expires con una fecha futura.

Tamaño de la respuesta Hasta 100 GiB.

El encabezado HTTP Age se define en función de cuándo almacenó en caché Media CDN por primera vez la respuesta y, por lo general, representa los segundos transcurridos desde que se almacenó en caché el objeto en una ubicación de protección del origen. Si tu origen genera un encabezado de respuesta Age, usa el modo de caché FORCE_CACHE_ALL para evitar que se vuelvan a validar los elementos cuando Age supere el TTL de la caché.

Para obtener más información sobre cómo interpreta Media CDN las directivas de almacenamiento en caché HTTP, consulta Directivas de control de caché.

Requisitos de origen

Para permitir que Media CDN almacene en caché respuestas de origen de más de 1 MiB, un origen debe incluir lo siguiente en los encabezados de respuesta de las solicitudes GET, a menos que se especifique lo contrario:

  • Un encabezado de respuesta HTTP Last-Modified o ETag (un validador).
  • Un encabezado HTTP Date válido.
  • Un encabezado Content-Length válido.
  • El encabezado de respuesta Content-Range en respuesta a una solicitud Range GET. El encabezado Content-Range debe tener un valor válido con el formato bytes x-y/z (donde z es el tamaño del objeto).

El protocolo de origen predeterminado es HTTP/2. Si tus orígenes solo admiten HTTP/1.1, puedes definir el campo de protocolo explícitamente para cada origen.

Respuestas que no se pueden almacenar en caché

En la siguiente tabla se detallan los atributos de solicitud y respuesta que impiden que se almacene en caché una respuesta. Las respuestas que se pueden almacenar en caché, pero que coinciden con criterios "no almacenables en caché", no se almacenan en caché.

Atributo HTTP Requisito
Código de estado

Un código de estado distinto de los definidos como almacenables en caché, como HTTP 401, HTTP 412 o HTTP 505.

Estos códigos de estado suelen representar problemas de cara al cliente y no el estado del origen. Almacenar en caché esas respuestas puede dar lugar a situaciones de "envenenamiento de caché", en las que se almacena en caché una respuesta "incorrecta" activada por un usuario para todos los usuarios.

Encabezados de solicitud

En las solicitudes con un encabezado Authorization request, las respuestas deben incluir una directiva public Cache-Control para almacenarse en caché.

Una directiva no-store en la solicitud hace que la respuesta no se almacene en caché. Para obtener más información, consulta las directivas de control de caché.

Encabezados de respuesta

Tiene un encabezado Set-Cookie.

Tiene un encabezado Vary que no es Accept, Accept-Encoding, Origin, X-Origin, X-Goog-Allowed-Resources, Sec-Fetch-Dest, Sec-Fetch-Mode o Sec-Fetch-Site.

En el modo CACHE_ALL_STATIC o USE_ORIGIN_HEADERS, tiene una directiva de control de caché no-store o private.

Tamaño de la respuesta Superior a 100 GiB.

Estas reglas se aplican además del modo de caché configurado. En concreto, este cambio afecta a las siguientes acciones:

  • Si el modo de caché CACHE_ALL_STATIC está configurado, solo se almacenan en caché las respuestas que se consideran contenido estático o las respuestas con directivas de caché válidas en sus encabezados de respuesta. Las demás respuestas se envían tal cual a través de un proxy.
  • El modo de caché FORCE_CACHE_ALL almacena en caché todas las respuestas incondicionalmente, de acuerdo con los requisitos de no almacenamiento en caché indicados anteriormente.
  • El modo de caché USE_ORIGIN_HEADERS requiere que las respuestas definan directivas de caché válidas en sus encabezados de respuesta, además de tener un código de estado que se pueda almacenar en caché.

Notas:

  • Las respuestas que no se almacenan en caché no tienen sus directivas de control de caché ni otros encabezados modificados y se envían a través de proxy tal cual.
  • Las respuestas pueden tener los encabezados Cache-Control y Expires contraídos en un solo campo Cache-Control. Por ejemplo, una respuesta con Cache-Control: public y Cache-Control: max-age=100 en líneas independientes se contraería como Cache-Control: public,max-age=100.
  • Las respuestas que no se pueden almacenar en caché (respuestas que nunca se almacenarían en caché) no se contabilizan como Cache Egress desde el punto de vista de la facturación.

Usar modos de caché

Los modos de caché le permiten configurar cuándo debe respetar Media CDN las directivas de caché del origen, almacenar en caché los tipos de contenido multimedia estático y almacenar en caché todas las respuestas del origen, independientemente de las directivas definidas.

Los modos de caché se configuran a nivel de ruta y, combinados con las anulaciones de TTL, te permiten configurar el comportamiento de la caché por host, ruta, parámetros de consulta y encabezados (cualquier parámetro de solicitud que se pueda asociar).

  • De forma predeterminada, Media CDN usa el CACHE_ALL_STATICmodo de caché, que almacena automáticamente en caché los tipos de contenido multimedia estático habituales durante 1 hora (3600 segundos), al tiempo que prioriza las directivas de caché especificadas por el origen para las respuestas almacenables en caché.
  • Puedes aumentar o reducir el tiempo de vida de la caché aplicado a las respuestas sin que se haya definido un tiempo de vida de la caché explícito (una directiva max-age o s-maxage) configurando el campo cdnPolicy.defaultTtl en una ruta.
  • Para evitar que se almacenen en caché respuestas que no sean correctas durante más tiempo del previsto, los códigos de estado que no sean 2xx (es decir, que no sean correctos) no se almacenan en caché según su