Cambiar los modos de almacenamiento en caché

En esta página, se proporcionan instrucciones para cambiar los modos de almacenamiento en caché con Cloud CDN. Los modos de almacenamiento en caché te permiten configurar cómo Cloud CDN almacena en caché tu contenido.

Antes de comenzar

Configura el modo de almacenamiento en caché

Cloud CDN ofrece tres modos de almacenamiento en caché, que definen cómo las respuestas se almacenan en caché, si Cloud CDN respeta las directivas de caché que envió el origen y cómo se aplican los TTL de caché.

Los modos de almacenamiento en caché disponibles se muestran en la siguiente tabla:

Modo de almacenamiento en caché Comportamiento
CACHE_ALL_STATIC Almacena automáticamente en caché las respuestas correctas con contenido estático que no de lo contrario, no se puede almacenar en caché. Las respuestas de origen que establecen directivas de almacenamiento en caché válidas también se almacenan en caché.

Este es el comportamiento predeterminado para los backends habilitados para Cloud CDN que se crean mediante Google Cloud CLI o la API de REST.

USE_ORIGIN_HEADERS Requiere respuestas de origen para establecer directivas de caché válidas y encabezados de almacenamiento en caché válidos. Las respuestas exitosas sin estas directivas se reenvían desde el origen.
FORCE_CACHE_ALL Se almacenan en caché las respuestas correctas de forma incondicional y se anulan las directivas de caché que estableció el origen. Este modo no es apropiado si el backend entrega contenido privado por usuario, como respuestas de la API o HTML dinámico.

Las respuestas de error pueden almacenarse en caché incluso si no hay directivas de caché válidas.

Antes de configurar el modo de almacenamiento en caché en FORCE_CACHE_ALL, considera los siguientes comportamientos:

  • Para las URL o cookies firmadas, FORCE_CACHE_ALL anula la antigüedad máxima especificada a través de la configuración antigüedad máxima de la entrada en la caché en la consola de Google Cloud o en la opción gcloud --signed-url-cache-max-age.

  • FORCE_CACHE_ALL cambia el tiempo de actividad (TTL) de cualquier contenido que se haya almacenado en caché con anterioridad. Este cambio puede hacer que algunas entradas que antes se consideraron actualizadas (debido a tener unos TTL más largos de los encabezados de origen) se consideren inactivas, y puede causar que algunas entradas que antes se consideraron inactivas se consideren actualizadas.

  • FORCE_CACHE_ALL anula las directivas de caché (Cache-Control y Expires), pero no anula otros encabezados de respuesta de origen. En particular, se sigue respetando un encabezado Vary y puede suprimir el almacenamiento en caché, incluso en la presencia de FORCE_CACHE_ALL. Para obtener más información, consulta Encabezados Vary.

A fin de configurar los modos de almacenamiento en caché para un backend con Cloud CDN habilitado, sigue estos pasos:

Console

  1. En la consola de Google Cloud, ve a la página Balanceo de cargas.

    Ir a la página Balanceo de cargas

  2. Haz clic en el nombre de tu balanceador de cargas de aplicaciones externo.
  3. Haz clic en Editar .
  4. En Configuración de backend, selecciona un backend y haz clic en Editar .
  5. Asegúrate de que la opción Habilitar Cloud CDN esté seleccionada.
  6. En Modo de almacenamiento en caché, selecciona una de las siguientes opciones:
    • Almacena el contenido estático en caché (recomendado): El contenido estático consiste en recursos web que no cambian para cada usuario. El contenido estático se basa en el Content-Type en la respuesta. Para obtener más información, consulta contenido estático.
    • Usa la configuración de origen en función de los encabezados Cache-Control: Almacena en caché respuestas con directivas de caché válidas en los encabezados de respuesta.
    • Fuerza el almacenamiento en caché de todo el contenido: Almacena en caché todo el contenido que entrega el origen, sin importar las directivas private o no-store.
  7. Haz clic en Guardar.

gcloud

Para los servicios de backend, usa el comando gcloud compute backend-services create o gcloud compute backend-services update con la marca --cache-mode.

Para los buckets de backend, usa el comando gcloud compute backend-buckets create o gcloud compute backend-buckets update con la marca --cache-mode.

gcloud compute backend-services (create | update) BACKEND_SERVICE_NAME
    --cache-mode=CACHE_MODE
gcloud compute backend-buckets (create | update) BACKEND_BUCKET_NAME
    --cache-mode=CACHE_MODE

Reemplaza CACHE_MODE por uno de los siguientes valores:

  • CACHE_ALL_STATIC (predeterminado): Almacena en caché el contenido estático de forma automática. Las respuestas con la marca de que no pueden almacenarse en caché (directivas private, no-store en encabezados de respuesta Cache-Control) no se almacenan en caché. Para almacenar en caché contenido dinámico, el contenido debe tener encabezados de almacenamiento en caché válidos.

  • USE_ORIGIN_HEADERS: Se requiere que se configuren encabezados de almacenamiento en caché válidos para el contenido de la caché en el origen. Las respuestas sin estos encabezados no se almacenan en caché en el extremo de Google y requieren un recorrido completo al origen en cada solicitud, lo que podría afectar el rendimiento y aumentar la carga en el servidor de origen.

  • FORCE_CACHE_ALL: Almacena en caché todo el contenido (es decir, respuestas correctas), ignorando las directivas private o no-store en los encabezados de respuesta Cache-Control. Esto podría provocar que se almacene en caché el contenido privado por usuario (lo que permita identificarlo). Solo se debería habilitar en backends que no entreguen contenido dinámico ni privado, como los buckets de Cloud Storage. No habilites esta opción en backends que entregan contenido privado o dinámico.

API

En el caso de los buckets de backend, usa la llamada a la API Method: backendBuckets.insert o Method: backendBuckets.update.

Para los servicios de backend, usa la llamada a la API Method: backendServices.insert o Method: backendServices.update.

Usa una de las siguientes llamadas a la API:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets
PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/BACKEND_BUCKET
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices
PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE

Agrega el siguiente fragmento al cuerpo de la solicitud JSON:

"cdnPolicy": {
  "cacheMode": (CACHE_ALL_STATIC | USE_ORIGIN_HEADERS | FORCE_CACHE_ALL)

Reemplaza CACHE_MODE por uno de los siguientes valores:

  • CACHE_ALL_STATIC (predeterminado): almacena automáticamente en caché estática contenido si no se establece el origen encabezados de almacenamiento en caché válidos Respuestas que están marcados como no almacenables en caché (directivas private o no-store de Cache-Control) no se almacenan en caché. Para almacenar en caché contenido dinámico, el contenido debe tener encabezados de almacenamiento en caché válidos.

  • USE_ORIGIN_HEADERS: Se requiere que se configuren encabezados de almacenamiento en caché válidos para el contenido de la caché en el origen. Las respuestas sin estos encabezados no se almacenan en caché en el extremo de Google y requieren un recorrido completo al origen en cada solicitud, lo que podría afectar el rendimiento y aumentar la carga en el servidor de origen.

  • FORCE_CACHE_ALL: Almacena en caché todo el contenido (es decir, respuestas correctas), ignorando las directivas private o no-store en los encabezados de respuesta Cache-Control. Esto podría provocar que se almacene en caché el contenido privado por usuario (lo que permita identificarlo). Solo se debería habilitar en backends que no entreguen contenido dinámico ni privado, como buckets de Cloud Storage.