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
Lee sobre los modos de almacenamiento en caché y el contenido estático.
Asegúrate de que Cloud CDN esté habilitado. Para obtener instrucciones, consulta Usa Cloud CDN.
Si es necesario, actualiza a la última versión de Google Cloud CLI:
gcloud components update
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óngcloud --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
yExpires
), pero no anula otros encabezados de respuesta de origen. En particular, se sigue respetando un encabezadoVary
y puede suprimir el almacenamiento en caché, incluso en la presencia deFORCE_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
- En la consola de Google Cloud, ve a la página Balanceo de cargas.
- Haz clic en el nombre de tu balanceador de cargas de aplicaciones externo.
- Haz clic en Editar .
- En Configuración de backend, selecciona un backend y haz clic en Editar .
- Asegúrate de que la opción Habilitar Cloud CDN esté seleccionada.
- 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
ono-store
.
- 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
- 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é (directivasprivate
,no-store
en encabezados de respuestaCache-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 directivasprivate
ono-store
en los encabezados de respuestaCache-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é (directivasprivate
ono-store
deCache-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 directivasprivate
ono-store
en los encabezados de respuestaCache-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.