Media CDN entrega contenido lo más cerca posible de los usuarios con la infraestructura de almacenamiento en caché perimetral global de Google para almacenar contenido en caché y reducir la carga en la infraestructura de origen.
Puedes controlar cómo se almacena en caché el contenido de cada ruta. Esto te permite optimizar el comportamiento en función del tipo de contenido, los atributos de la solicitud del cliente y tus requisitos de actualización.
Capacidad de almacenamiento en caché
En las siguientes secciones, se describe qué respuestas almacena en caché Media CDN y cómo mejorar la descarga de caché.
Comportamiento de almacenamiento en caché predeterminado
De forma predeterminada, la siguiente configuración relacionada con la caché se aplica a cada servicio de almacenamiento en caché perimetral:
Modo de caché predeterminado de
CACHE_ALL_STATIC:- Respeta las directivas de caché del origen, como
Cache-ControloExpires, hasta un TTL máximo configurable. - Almacena en caché tipos de medios estáticos automáticamente con un TTL predeterminado de 3, 600 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é del 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 el almacenamiento en caché esté configurado de forma explícita. Para aprender a anular el comportamiento predeterminado, consulta la documentación sobre modos de almacenamiento en caché.
El comportamiento predeterminado es equivalente al siguiente cdnPolicy. Las rutas sin un cdnPolicy configurado de forma explícita 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ápido, lo que permite tiempos de carga más rápidos. No todas las respuestas HTTP pueden almacenarse en caché.
Puedes configurar los modos de almacenamiento en caché para cada ruta a fin de anular este comportamiento (por ejemplo, usar el modo de almacenamiento en caché CACHE_ALL_STATIC a fin de almacenar en caché tipos de medios comunes), incluso si el origen no está configurado. Una directiva de control de caché en la respuesta.
Las solicitudes y respuestas que cumplen con los criterios definidos en las respuestas que no se pueden almacenar en caché sustituyen la capacidad de almacenamiento en caché.
En la siguiente tabla, se describen los requisitos para almacenar en caché respuestas HTTP específicas. Las respuestas de GET y HEAD deben cumplir con estos requisitos.
| Atributo HTTP | Requisitos |
|---|---|
| Código de estado | El código de estado de 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 la solicitud | Se ignoran la mayoría de las directivas de solicitud de almacenamiento en caché. Para obtener más información, consulta Directivas de control de caché. |
| Encabezados de respuesta | Contiene una directiva de almacenamiento en caché HTTP válida, como Tiene un modo de caché que almacena en caché ese contenido o tiene un encabezado |
| Tamaño de la respuesta | Hasta 100 GiB. |
El encabezado HTTP Age se establece en función de cuándo la Media CDN obtuvo por primera vez la respuesta y, por lo general, representa los segundos desde que el objeto se almacenó en caché en una ubicación de protección contra el origen. Si tu origen genera un encabezado de respuesta Age, usa el modo de almacenamiento en caché FORCE_CACHE_ALL para evitar la revalidación cuando la edad supere el TTL de la caché.
Para obtener más información sobre cómo Media CDN interpreta las directivas de almacenamiento en caché HTTP, consulta Directivas de control de caché.
Requisitos de origen
Para permitir que la CDN de Media almacene en caché las respuestas de origen de más de 1 MiB, un origen debe incluir lo siguiente en los encabezados de respuesta para las solicitudes de 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-Range, en respuesta a una solicitudRange GET. El encabezadoContent-Rangedebe tener un valor válido con el formatobytes x-y/z(en el quezes el tamaño del objeto).
El protocolo de origen predeterminado es HTTP/2. Si tus orígenes solo admiten HTTP/1.1, puedes configurar el campo del protocolo de forma explícita 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 una respuesta se almacene en caché. Las respuestas que pueden almacenarse en caché, pero que coinciden con un criterio “no almacenable 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. Por lo general, estos códigos de estado representan problemas que afectan al cliente y no al estado del origen. Almacenar en caché esas respuestas puede generar situaciones de "envenenamiento de caché" en las que se almacena en caché una respuesta "incorrecta" activada por el usuario para todos los usuarios. |
| Encabezados de la solicitud | Para las solicitudes con un encabezado de solicitud Una directiva |
| Encabezados de respuesta | Tienen 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 particular, haz lo siguiente:
- Con el modo de almacenamiento en caché
CACHE_ALL_STATICconfigurado, 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 mediante proxy tal como están. - El modo de almacenamiento en caché
FORCE_CACHE_ALLalmacena en caché todas las respuestas de forma incondicional, sujeto a los requisitos de no almacenamiento en caché que se indicaron anteriormente. - El modo de almacenamiento en caché
USE_ORIGIN_HEADERSrequiere respuestas para establecer directivas de caché válidas en sus encabezados de respuesta, además de ser un código de estado que puede almacenarse 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 mediante proxy tal como están.
- Las respuestas pueden tener sus encabezados
Cache-ControlyExpirescontraídos en un solo campoCache-Control. Por ejemplo, una respuesta conCache-Control: publicyCache-Control: max-age=100en líneas separadas se contraería comoCache-Control: public,max-age=100. - Las respuestas que no pueden almacenarse en caché (respuestas que nunca se almacenarían en caché) no se cuentan como
Cache Egressdesde la perspectiva de facturación.
Usa modos de almacenamiento en caché
Los modos de almacenamiento en caché te permiten configurar cuándo Media CDN debe respetar las directivas de caché de origen, almacenar en caché tipos de medios estáticos y almacenar en caché todas las respuestas del origen, sin importar las directivas configuradas.
Los modos de almacenamiento en caché se configuran a nivel de ruta y, junto con las anulaciones de TTL, te permiten configurar el comportamiento de la caché por host, ruta de acceso, parámetros de consulta y encabezados (cualquier parámetro de solicitud que coincida).
- De forma predeterminada, Media CDN usa el modo de almacenamiento en caché
CACHE_ALL_STATIC, que almacena en caché automáticamente los tipos de medios estáticos comunes durante 1 hora (3,600 segundos), a la vez que prioriza las directivas de caché que especifica el origen para las respuestas almacenables en caché. - Puedes aumentar o disminuir el TTL de caché aplicado a las respuestas sin un TTL de caché explícito establecido (una directiva
max-ageos-maxage) configurando el campocdnPolicy.defaultTtlen una ruta. - Para evitar que se almacenen en caché las respuestas no exitosas durante más tiempo del previsto, los códigos de estado que no son 2xx (no exitosos) no se almacenan en caché según su
Content-Type(tipo de MIME) y no tienen aplicado el TTL predeterminado.
Los modos de almacenamiento en caché disponibles, que se configuran en el cdnPolicy.cacheMode de cada ruta, se muestran en la siguiente tabla.
| Modo de almacenamiento en caché | Comportamiento |
|---|---|
USE_ORIGIN_HEADERS |
Requiere respuestas de origen para establecer directivas de caché válidas y encabezados de almacenamiento en caché válidos. Para obtener una lista completa de los requisitos, consulta Respuestas que se pueden almacenar en caché. |
CACHE_ALL_STATIC |
Almacena en caché de forma automática las respuestas exitosas con contenido estático, a menos que tengan una directiva El contenido estático incluye videos, audio, imágenes y recursos web comunes, según lo define el tipo de MIME en el encabezado de respuesta |
FORCE_CACHE_ALL |
Almacena en caché las respuestas exitosas sin excepción y se anulan las directivas de caché que estableció el origen. Asegúrate de no entregar contenido privado por usuario (como HTML dinámico o respuestas de la API) con este modo configurado. |
| BYPASS_CACHE | Todas las solicitudes que coinciden con una ruta que tiene configurado este modo de caché omiten la caché, incluso si hay un objeto almacenado en caché que coincida con esa clave de caché. Recomendamos usar esta opción solo para la depuración, ya que Media CDN está diseñado como una infraestructura de caché a escala planetaria y no como un proxy de uso general. |
Tipos de MIME de contenido estático
El modo de almacenamiento en caché CACHE_ALL_STATIC permite que Media CDN almacene en caché automáticamente el contenido estático común, como videos, imágenes y elementos web comunes, según el tipo de MIME que se muestra en el encabezado de respuesta HTTP Content-Type. Sin embargo, independientemente del tipo de medio, Media CDN prioriza cualquier encabezado Cache-Control o Expires explícito en la respuesta del origen.
En la siguiente tabla, se enumeran los tipos de MIME que se pueden almacenar en caché automáticamente con el modo de almacenamiento en 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. Debes asegurarte de que la respuesta establezca una directiva de caché válida o usar el modo de almacenamiento en caché FORCE_CACHE_ALL para almacenar respuestas en caché de forma incondicional.
| Categoría | Tipos de MIME |
|---|---|
| Elementos 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/* |
| Videos | 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 origen debe configurar el
Content-Typepara cada respuesta. Muchos servidores web configuran el encabezadoContent-Typeautomáticamente, incluidos NGINX, Varnish y Apache. - Cloud Storage configura el encabezado
Content-Typeautomáticamente en la carga cuando usas la consola de Google Cloud o la gcloud CLI para subir contenido. - Cloud Storage siempre proporciona un encabezado
Cache-Controla Media CDN. Si no se elige un valor de forma explícita, se envía un valor predeterminado. Como resultado, todas las respuestas exitosas de Cloud Storage se almacenan en caché según los valores predeterminados de Cloud Storage, a menos que ajustes de forma explícita los metadatos de control de caché para los objetos en Cloud Storage o uses el modoFORCE_CACHE_ALLpara anular los valores que envía Cloud Storage.
Si una respuesta se puede almacenar en caché según su tipo de 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 medios, como HTML (text/html) y JSON (application/json), no se almacenan en caché de forma predeterminada. Estos tipos de respuestas suelen ser dinámicas (por usuario) y tampoco son adecuados para la arquitectura de Media CDN. Recomendamos usar Cloud CDN para entregar elementos web y almacenar en caché respuestas de la API.
Configura los TTL para el almacenamiento en caché
Las anulaciones de tiempo de actividad (TTL) te permiten establecer valores de TTL predeterminados para el contenido almacenado en caché y anular los valores de TTL configurados en las directivas max-age y s-maxage de control de caché (o encabezados Expires) según tus orígenes.
Los TTL, ya sea que se establezcan por anulaciones o con una directiva de caché, son optimistas. El contenido al que se accede con poca frecuencia o que es poco popular puede expulsarse de la caché antes de que se alcance el TTL.
En la siguiente tabla, se muestran tres parámetros de configuración de TTL.
| Configuración | Predeterminado | Mínimo | Máximo | Descripción | Modos de almacenamiento en caché aplicables |
|---|---|---|---|---|---|
| Default TTL | 1 hora (3,600 segundos) |
0 segundos | 1 año (31,536,000 segundos) |
Es el TTL que se debe establecer cuando el origen no especificó un encabezado Si el origen especifica un encabezado Cuando se usa |
|
| Max TTL | 1 día (86,400 segundos) |
0 segundos | 1 año (31,536,000 segundos) |
Para las respuestas que se pueden almacenar en caché, es el TTL máximo permitido. Los valores superiores a este se limitan al valor de maxTtl.
|
CACHE_ALL_STATIC |