Información general sobre el almacenamiento en caché

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_ALL anula 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ón gcloud --signed-url-cache-max-age.

  • FORCE_CACHE_ALL cambia 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_ALL anula las directivas de caché (Cache-Control y Expires), pero no anula otros encabezados de respuesta de origen. En concreto, un encabezado Vary puede suprimir el almacenamiento en caché aunque el modo de caché sea FORCE_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-Type para cada respuesta. Muchos servidores web definen automáticamente el encabezado Content-Type, incluidos NGINX, Varnish y Apache.

  • Cloud Storage define el encabezado Content-Type automáticamente cuando usas la Google Cloud consola o la CLI de Google Cloud para subir contenido.

  • Cloud Storage siempre proporciona un encabezado Cache-Control a 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 modo FORCE_CACHE_ALL para anular los valores enviados por Cloud Storage.

  • Si quieres almacenar en caché los tipos de contenido text/html y application/json, debes definir encabezados Cache-Control explí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

200, 203, 204, 206, 300, 301, 302, 307, 308, 404, 405, 410, 421, 451 o 501.

Actualización

La respuesta tiene un encabezado Cache-Control con una directiva max-age o s-maxage, o un encabezado Expires con una marca de tiempo futura.

En el caso de las respuestas almacenables en caché sin antigüedad (por ejemplo, con no-cache), se debe proporcionar explícitamente la directiva public.

En el modo de caché CACHE_ALL_STATIC, si no hay directivas de actualización, se puede almacenar en caché una respuesta correcta con un tipo de contenido estático.

Con el modo de caché FORCE_CACHE_ALL, cualquier respuesta correcta se puede almacenar en caché. Esto puede dar lugar a que se almacene en caché contenido privado y por usuario. Solo debes definir FORCE_CACHE_ALL en backends que no estén sirviendo contenido privado o dinámico (por ejemplo, en segmentos de Cloud Storage).

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 Content-Length, Content-Range o Transfer-Encoding: chunked válido.

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:

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