Una respuesta que se puede almacenar en caché es una respuesta HTTP que Cloud 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é.
Modos de caché
Con los modos de caché, puede controlar los factores que determinan si Cloud CDN almacena en caché su contenido.
Cloud CDN ofrece tres modos de caché que definen cómo se almacenan en caché las respuestas, si Cloud CDN respeta las directivas de caché enviadas por el origen y cómo se aplican los TTL de caché.
En la siguiente tabla se muestran los modos de caché disponibles:
| Modo de caché | Comportamiento |
|---|---|
CACHE_ALL_STATIC |
Almacena en caché automáticamente las respuestas correctas con contenido estático que, de lo contrario, no se podría almacenar en caché.
También se almacenan en caché las respuestas de origen que definen directivas de almacenamiento en caché válidas. Este comportamiento es el predeterminado para los back-ends habilitados para Cloud CDN que se crean con la interfaz de línea de comandos de Google Cloud o la API REST. |
USE_ORIGIN_HEADERS |
Requiere respuestas de origen correctas para definir directivas de caché válidas y encabezados de almacenamiento en caché válidos. Las respuestas correctas sin estas directivas
se reenvían desde el origen. |
FORCE_CACHE_ALL |
Almacena en caché incondicionalmente las respuestas correctas, anulando cualquier directiva de caché definida por el origen. Este modo no es adecuado si el backend sirve contenido privado y por usuario (información de identificación personal), como HTML dinámico o respuestas de API. |
Las respuestas de error se pueden almacenar en caché incluso si no hay directivas de caché válidas.
Antes de definir el modo de caché en FORCE_CACHE_ALL, ten en cuenta los siguientes comportamientos:
En el caso de las URLs o cookies firmadas,
FORCE_CACHE_ALLanula la antigüedad máxima especificada mediante el ajuste Antigüedad máxima de la entrada de caché en la consola Google Cloud o la opcióngcloud --signed-url-cache-max-age.FORCE_CACHE_ALLcambia el tiempo de vida (TTL) de cualquier contenido almacenado en caché anteriormente. Este cambio puede hacer que algunas entradas que antes se consideraban recientes (porque tenían TTLs más largos en los encabezados de origen) se consideren obsoletas, y que algunas entradas que antes se consideraban obsoletas se consideren recientes.FORCE_CACHE_ALLanula las directivas de caché (Cache-ControlyExpires), pero no anula otros encabezados de respuesta de origen. En concreto, un encabezadoVarypuede suprimir el almacenamiento en caché aunque el modo de caché seaFORCE_CACHE_ALL. Para obtener más información, consulta Encabezados Vary.
Para obtener instrucciones de configuración, consulta el artículo Configurar el modo de caché.
Contenido estático
El contenido estático es el que siempre es el mismo, incluso cuando acceden diferentes usuarios. El CSS que usas para dar estilo a tu sitio, JavaScript para proporcionar interactividad, vídeo y contenido de imagen normalmente no cambian para cada usuario en una URL determinada (clave de caché) y, por lo tanto, se benefician de estar en caché en la red perimetral global de Cloud CDN.
Si configuras el modo de caché como CACHE_ALL_STATIC y una respuesta no tiene directivas de almacenamiento en caché explícitas en los encabezados Cache-Control o Expires, Cloud CDN almacena en caché automáticamente esa respuesta en los siguientes casos:
- Recursos web, incluidos CSS (
text/css), JavaScript (application/javascript) y todas las fuentes web, incluido WOFF2 (font/woff2) - Imágenes, incluidos JPEG (
image/jpg) y PNG (image/png) - Vídeos, incluidos H.264, H.265 y MP4 (
video/mp4) - Archivos de audio, incluidos MP3 (
audio/mpeg) y MP4 (audio/mp4) - Documentos formateados, incluidos PDF (
application/pdf)
En la siguiente tabla puedes ver un resumen.
| 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 y application/postscript |
Cloud CDN inspecciona el encabezado de respuesta HTTP Content-Type, que refleja el tipo MIME del contenido que se está sirviendo.
Ten en cuenta lo siguiente:
El software del servidor web de tu origen debe definir el
Content-Typepara cada respuesta. Muchos servidores web definen automáticamente el encabezadoContent-Type, incluidos NGINX, Varnish y Apache.Cloud Storage define el encabezado
Content-Typeautomáticamente cuando usas la Google Cloud consola o la CLI de Google Cloud para subir contenido.Cloud Storage siempre proporciona un encabezado
Cache-Controla Cloud 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 quieres almacenar en caché los tipos de contenido
text/htmlyapplication/json, debes definir encabezadosCache-Controlexplícitos en la respuesta y tener cuidado de no almacenar en caché por error los datos de un usuario y ofrecérselos a todos los usuarios.
Si una respuesta se puede almacenar en caché en función de su tipo MIME, pero tiene un encabezado de respuesta Cache-Control de private o no-store, o un encabezado Set-Cookie, no se almacena en caché. Para obtener más información, consulta las reglas de almacenamiento en caché.
Otros tipos de contenido, como HTML (text/html) y JSON (application/json), no se almacenan en caché de forma predeterminada para las respuestas correctas. Este tipo de respuestas suelen ser dinámicas (por usuario). Por ejemplo, carritos de la compra, páginas de productos con personalización para el usuario y respuestas de APIs autenticadas. Sin embargo, si está habilitado el almacenamiento en caché negativo, es posible que se almacenen en caché para determinados códigos de estado.
Cloud CDN no usa extensiones de archivo en la ruta de la URL para determinar si una respuesta se puede almacenar en caché, ya que muchas respuestas válidas que se pueden almacenar en caché no se reflejan en las URLs.
Contenido que se puede almacenar en caché
Cloud CDN almacena en caché las respuestas que cumplen todos los requisitos de esta sección. Algunos de estos requisitos se especifican en RFC 7234, mientras que otros son específicos de Cloud CDN.
Cloud CDN puede cambiar periódicamente el conjunto exacto de condiciones en las que almacena contenido en caché. Si quiere evitar explícitamente que Cloud CDN almacene en caché su contenido, siga las directrices de RFC 7234 para determinar cómo especificar una respuesta que no se pueda almacenar en caché. Consulta también la sección Contenido no almacenable en caché basado en encabezados de origen.
Cloud CDN almacena las respuestas en caché si se cumplen todas las condiciones siguientes.
| Atributo | Requisito |
|---|---|
| Publicado por | Servicio de backend, segmento de backend o backend externo con Cloud CDN habilitado |
| En respuesta a | Solicitud de GET |
| Código de estado |
|
| Actualización | La respuesta
tiene un encabezado En el caso de las respuestas almacenables en caché sin antigüedad (por ejemplo, con En el modo de caché Con el modo de caché Si el almacenamiento en caché negativo está habilitado y el código de estado coincide con uno para el que se especifica un TTL, la respuesta se puede almacenar en caché, aunque no tenga directivas de actualización explícitas. |
| Contenido | En el caso de los orígenes HTTP/1, la respuesta debe contener un encabezado En el caso de los orígenes que usan versiones más avanzadas del protocolo HTTP (HTTP/2 y posteriores), no es necesario que la respuesta tenga estos encabezados. |
| Tamaño | Menor o igual que el tamaño máximo.
En el caso de las respuestas con tamaños entre 10 MiB y 100 GiB, consulta las restricciones de almacenamiento en caché adicionales que se describen en las solicitudes de intervalo de bytes. |
En el caso de los segmentos de backend de Cloud Storage, sigue estas sugerencias adicionales:
Hacer que el segmento se pueda leer públicamente. Este es el método que recomendamos para el contenido público. Con este ajuste, cualquier usuario de Internet puede ver y enumerar tus objetos y sus metadatos, excepto las listas de control de acceso. Le recomendamos que dedique contenedores específicos a los objetos públicos.
Usa carpetas gestionadas para hacer que una parte de tu segmento se pueda leer públicamente.
Hacer que los objetos se puedan leer públicamente. No recomendamos este enfoque, ya que utiliza un sistema de permisos antiguo específico de Cloud Storage.
No almacenes el objeto en un segmento que tenga habilitada la opción Pago por solicitud ni en un perímetro de servicio de nube privada virtual.
No encriptes el objeto con claves de encriptado gestionadas por el cliente ni con claves de encriptado proporcionadas por el cliente.
De forma predeterminada, cuando un objeto es público y no especifica metadatos Cache-Control, Cloud Storage le asigna un encabezado Cache-Control: public, max-age=3600. Puedes definir valores diferentes mediante los Cache-Controlmetadatos.
Para ver un ejemplo de cómo configurar un balanceador de carga de aplicación externo con un segmento de backend, consulta Configurar Cloud CDN con un segmento de backend.
Tamaño máximo
Cloud CDN aplica un tamaño máximo a cada respuesta. Las respuestas con un cuerpo mayor que el tamaño máximo no se almacenan en caché, pero se siguen enviando al cliente.
El tamaño máximo varía en función de si el servidor de origen admite solicitudes de intervalo de bytes.
| El servidor de origen admite solicitudes de intervalo de bytes | El servidor de origen no admite solicitudes de intervalo de bytes |
|---|---|
| 100 GiB (107.374.182.400 bytes) | 10 MiB (10.485.760 bytes) |
Casi todos los servidores web modernos (incluidos NGINX, Apache y Varnish) admiten solicitudes de intervalo de bytes.
Contenido que no se puede almacenar en caché en función de los encabezados de origen
Hay comprobaciones que bloquean el almacenamiento en caché de las respuestas. Cloud CDN puede cambiar periódicamente el conjunto exacto de condiciones en las que almacena contenido en caché, por lo que, si quieres evitar explícitamente que Cloud CDN almacene tu contenido en caché, sigue las directrices del estándar (RFC 7234) para determinar cómo especificar una respuesta que no se pueda almacenar en caché.
Cloud CDN no almacena en caché una respuesta si no cumple los requisitos de contenido que se puede almacenar en caché o si se cumple alguna de las siguientes condiciones.
| Atributo | Requisito |
|---|---|
| Publicado por | Servicio de backend o backend externo que no tiene Cloud CDN habilitado |
| Cookie | Tiene un encabezado Set-Cookie |
Encabezado Vary |
Tiene un valor distinto de |