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-ControloExpires, 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).
- Respeta las directivas de caché de origen, como
No almacena en caché las respuestas que tienen directivas de control de caché
no-storeoprivate, 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 Tiene un modo de caché que almacena ese contenido en caché o tiene un encabezado |
| 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-ModifiedoETag(un validador). - Un encabezado HTTP
Dateválido. - Un encabezado
Content-Lengthválido. - El encabezado de respuesta
Content-Rangeen respuesta a una solicitudRange GET. El encabezadoContent-Rangedebe tener un valor válido con el formatobytes x-y/z(dondezes 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 Una directiva |
| Encabezados de respuesta | Tiene un encabezado Tiene un encabezado En el modo |
| 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_STATICestá 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_ALLalmacena en caché todas las respuestas incondicionalmente, de acuerdo con los requisitos de no almacenamiento en caché indicados anteriormente. - El modo de caché
USE_ORIGIN_HEADERSrequiere 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-ControlyExpirescontraídos en un solo campoCache-Control. Por ejemplo, una respuesta conCache-Control: publicyCache-Control: max-age=100en líneas independientes se contraería comoCache-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 Egressdesde 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-ageos-maxage) configurando el campocdnPolicy.defaultTtlen 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
Content-Type(tipo MIME) y no tienen aplicado el TTL predeterminado.
Los modos de caché disponibles, que se definen en el cdnPolicy.cacheMode de cada ruta, se muestran en la siguiente tabla.
| Modo de caché | Comportamiento |
|---|---|
USE_ORIGIN_HEADERS |
Requiere que las respuestas de origen definan directivas de caché y encabezados de almacenamiento en caché válidos. Para ver la lista completa de requisitos, consulta Respuestas almacenables en caché. |
CACHE_ALL_STATIC |
Almacena en caché automáticamente las respuestas correctas con contenido estático, a menos que tengan una directiva El contenido estático incluye vídeo, audio, imágenes y recursos web comunes, tal como se define en el tipo MIME del encabezado de respuesta |
FORCE_CACHE_ALL |
Almacena en caché incondicionalmente las respuestas correctas, anulando cualquier directiva de caché definida por el origen. Asegúrate de no servir contenido privado por usuario (como HTML dinámico o respuestas de API) con este modo configurado. |
| BYPASS_CACHE | Cualquier solicitud que coincida con una ruta que tenga configurado este modo de caché omitirá la caché, aunque haya un objeto almacenado en caché que coincida con esa clave de caché. Te recomendamos que lo uses solo para depurar, ya que Media CDN se ha diseñado como una infraestructura de caché a escala planetaria y no como un proxy de uso general. |
Tipos MIME de contenido estático
El modo de caché CACHE_ALL_STATIC permite a Media CDN almacenar en caché automáticamente contenido estático habitual, como vídeo, audio, imágenes y recursos web comunes, en función del tipo MIME devuelto en el encabezado de respuesta HTTP Content-Type. Sin embargo, independientemente del tipo de contenido multimedia, Media CDN prioriza los encabezados Cache-Control o Expires explícitos en la respuesta del origen.
En la siguiente tabla se enumeran los tipos MIME que se pueden almacenar en caché automáticamente con el modo de caché CACHE_ALL_STATIC.
Las respuestas no se almacenan en caché automáticamente si no tienen un encabezado de respuesta Content-Type
con un valor que coincida con los siguientes valores. Debe asegurarse de que la respuesta defina una directiva de caché válida o de usar el modo de caché FORCE_CACHE_ALL para almacenar en caché las respuestas de forma incondicional.
| Categoría | tipos MIME |
|---|---|
| Recursos web | text/css text/ecmascript text/javascript application/javascript |
| Fuentes | Cualquier Content-Type que coincida con font/* |
| Imágenes | Cualquier Content-Type que coincida con image/* |
| Vídeos | Cualquier Content-Type que coincida con video/* |
| Audio | Cualquier Content-Type que coincida con audio/* |
| Tipos de documentos con formato | application/pdf and application/postscript |
Ten en cuenta lo siguiente:
- El software del servidor web de tu origen debe definir
Content-Typepara cada respuesta. Muchos servidores web definen automáticamente la cabeceraContent-Type, como NGINX, Varnish y Apache. - Cloud Storage define el encabezado
Content-Typeautomáticamente al subir contenido cuando se usa la Google Cloud consola o la CLI de gcloud. - Cloud Storage siempre proporciona un encabezado
Cache-Controla Media CDN. Si no se elige ningún valor explícitamente, se envía un valor predeterminado. Por lo tanto, todas las respuestas correctas de Cloud Storage se almacenan en caché según los valores predeterminados de Cloud Storage, a menos que ajuste explícitamente los metadatos de control de caché de los objetos de Cloud Storage o utilice el modoFORCE_CACHE_ALLpara anular los valores enviados por Cloud Storage.
Si una respuesta se puede almacenar en caché en función de su tipo MIME, pero tiene una directiva de respuesta Cache-Control de private o no-store, o un encabezado Set-Cookie, no se almacena en caché.
Otros tipos de contenido multimedia, como HTML (text/html) y JSON (application/json), no se almacenan en caché de forma predeterminada. Estos tipos de respuestas suelen ser dinámicos (por usuario) y tampoco se adaptan bien a la arquitectura de Media CDN. Recomendamos usar Cloud CDN para servir recursos web y almacenar en caché las respuestas de las APIs.
Configurar TTLs de caché
Las anulaciones del tiempo de vida (TTL) te permiten definir valores de TTL predeterminados para el contenido almacenado en caché y anular los valores de TTL definidos en las directivas de control de caché max-age y s-maxage (o en los encabezados Expires) definidos por tus orígenes.
Los TTLs, tanto si se definen mediante anulaciones como mediante una directiva de caché, son optimistas. Es posible que el contenido al que se accede con poca frecuencia o que no es popular se elimine de la caché antes de que se alcance el TTL.
En la siguiente tabla se muestran tres ajustes de TTL.
| Ajuste | Predeterminado | Mínimo | Máximo | Descripción | Modos de caché aplicables |
|---|---|---|---|---|---|