En esta página se describe cómo cambiar las anulaciones de TTL con Cloud CDN. Las anulaciones de TTL te permiten controlar con precisión cuánto tiempo almacena en caché Cloud CDN tu contenido antes de volver a validarlo.
Los ajustes de TTL se resumen en la siguiente tabla.
TTL predeterminado | TTL máximo | TTL de cliente | |
---|---|---|---|
Motivo de la configuración | Mejorar las tasas de aciertos de caché del contenido que no cambia a menudo | Forzar a Cloud CDN a revalidar el contenido con más frecuencia de la especificada por un encabezado de origen | Forzar a los clientes a revalidar el contenido con más frecuencia en Cloud CDN |
Se usa cuando | Para que una respuesta sea correcta, debe cumplirse una de las siguientes condiciones:
|
Se cumplen todas las condiciones siguientes:
|
Se cumple una de las siguientes condiciones:
|
Valor predeterminado | 3600 segundos (1 hora) | 86.400 segundos (1 día) | 3600 segundos (1 hora) |
Valor máximo permitido | 31.622.400 segundos (1 año) | 31.622.400 segundos (1 año) | 31.622.400 segundos (1 año) |
Notas | Debe ser inferior o igual al TTL máximo.--default-ttl=0 fuerza que la respuesta se vuelva a validar en el origen. |
Debe ser inferior o igual al TTL máximo |
Antes de empezar
Consulta información sobre los modos de caché.
Asegúrate de que Cloud CDN esté habilitado. Para obtener instrucciones, consulta el artículo Usar Cloud CDN.
Si es necesario, actualiza a la versión más reciente de la CLI de Google Cloud:
gcloud components update
Definir el TTL predeterminado
Para mejorar las tasas de aciertos de caché del contenido que no cambia con frecuencia, puedes anular el TTL predeterminado para que Cloud CDN revalide el contenido en el origen con menos frecuencia. Ten en cuenta que los objetos a los que se accede con poca frecuencia se pueden expulsar de la caché antes del TTL definido.
Cuando el modo de caché es FORCE_CACHE_ALL
, el TTL predeterminado sobrescribe el TTL definido en todas las respuestas (incluidas las que tienen un TTL definido por los encabezados de origen). En este modo, los clientes pueden ver el TTL predeterminado, ya que Cloud CDN define los atributos public
y max-age
de las respuestas que se sirven a los clientes.
En el modo CACHE_ALL_STATIC
, el TTL predeterminado se aplica al contenido almacenado en caché que sirve un origen para las respuestas que no tienen un TTL válido (encabezado max-age
, s-maxage
o Expires
). En el modo CACHE_ALL_STATIC
, el TTL predeterminado no modifica el encabezado Cache-Control
que se sirve a los clientes. Para modificar el encabezado Cache-Control
en el modo CACHE_ALL_STATIC
, debes definir el TTL del cliente.
Si configura el modo de caché para usar encabezados de origen (USE_ORIGIN_HEADERS
), el valor de TTL predeterminado no se aplica y no se puede definir porque Cloud CDN usa la directiva de origen max-age
o s-maxage
, o bien el encabezado Expires
.
Consola
- En la Google Cloud consola, ve a la página Balanceo de carga.
- Haga clic en el nombre de su balanceador de carga 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.
- Asegúrate de que el modo de caché sea Almacenar contenido estático en caché (opción recomendada) o Forzar el almacenamiento en caché de todo el contenido. No se admite la anulación de los valores de TTL cuando el modo de caché es Usar configuración del origen en función de los encabezados Cache-Control.
- En Tiempo de vida predeterminado, selecciona un valor.
- Haz clic en Guardar.
gcloud
En el caso de los servicios de backend, usa el comando gcloud compute backend-services
create
o gcloud compute backend-services
update
con la marca --default-ttl
.
En el caso de los segmentos de backend, usa el comando gcloud compute backend-buckets
create
o gcloud compute backend-buckets
update
con la marca --default-ttl
.
gcloud compute backend-services (create | update) BACKEND_SERVICE_NAME --default-ttl=DEFAULT_TTL
gcloud compute backend-buckets (create | update) BACKEND_BUCKET_NAME --default-ttl=DEFAULT_TTL
Sustituye DEFAULT_TTL
por un valor de hasta 31.622.400 segundos (1 año).
API
En el caso de los segmentos de backend, usa la llamada a la API Method: backendBuckets.insert
o Method: backendBuckets.update
.
En el caso de 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
Añade el siguiente fragmento al cuerpo de la solicitud JSON:
"cdnPolicy": { "defaultTtl": DEFAULT_TTL }
Sustituye DEFAULT_TTL
por un valor de hasta 31.622.400 segundos (1 año).
Definir el TTL máximo
El TTL máximo especifica el TTL máximo permitido en Cloud CDN para el contenido en caché que sirve un origen.
El TTL de una respuesta está limitado por el TTL máximo si se cumple una de las siguientes condiciones:
- La respuesta intenta definir un
max-age
o uns-maxage
superior al valor máximo de TTL. - La respuesta tiene un encabezado
Expires
con una fecha posterior a la actual en más decdnPolicy.maxTtl
segundos.
El ajuste de TTL máximo no cambia el valor de max-age
enviado al cliente. Para obtener más información, consulte Anular el TTL máximo del cliente. El ajuste max
TTL solo afecta al tiempo que Cloud CDN intenta almacenar en caché el contenido.
Este ajuste solo se usa cuando el modo de caché es CACHE_ALL_STATIC
. El valor máximo permitido es de 31.622.400 segundos (1 año). Ten en cuenta que los objetos a los que se accede con poca frecuencia se pueden expulsar de la caché antes del TTL definido.
Con FORCE_CACHE_ALL
, el TTL siempre se define como el TTL predeterminado. No puedes definir un TTL máximo.
Consola
- En la Google Cloud consola, ve a la página Balanceo de carga.
- Haga clic en el nombre de su balanceador de carga 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.
- Asegúrate de que el modo de caché sea Almacenar contenido estático en caché (opción recomendada).
- En Tiempo de vida máximo, seleccione un valor.
- Haz clic en Guardar.
gcloud
En el caso de los servicios de backend, usa el comando gcloud compute backend-services
create
o gcloud compute backend-services
update
con la marca --max-ttl
.
En el caso de los segmentos de backend, usa el comando gcloud compute backend-buckets
create
o gcloud compute backend-buckets
update
con la marca --max-ttl
.
gcloud compute backend-services (create | update) BACKEND_SERVICE_NAME --max-ttl=MAX_TTL
gcloud compute backend-buckets (create | update) BACKEND_BUCKET_NAME --max-ttl=MAX_TTL
Sustituye MAX_TTL
por un valor de hasta 31.622.400 segundos (1 año).
API
En el caso de los segmentos de backend, usa la llamada a la API Method: backendBuckets.insert
o Method: backendBuckets.update
.
En el caso de 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
Añade el siguiente fragmento al cuerpo de la solicitud JSON:
"cdnPolicy": { "maxTtl": MAX_TTL }
Sustituye MAX_TTL
por un valor de hasta 31.622.400 segundos (1 año).
Anular el TTL del cliente
En todos los modos de caché, Cloud CDN envía encabezados Cache-Control
al cliente.
El TTL del cliente te permite definir un TTL máximo para lo que se envía a los navegadores o clientes, de forma que los clientes revaliden el contenido en Cloud CDN con más frecuencia, sin necesidad de revalidarlo en el origen. De esta forma, el contenido se puede invalidar en Cloud CDN cuando sea necesario y los navegadores pueden descubrir que el contenido se ha invalidado en cuanto expire el TTL del cliente.
En el modo FORCE_CACHE_ALL
, Cloud CDN suele enviar al cliente el mismo max-age
que usa internamente para el almacenamiento en caché de proxy. Sin embargo, si se especifica un TTL de cliente y es un valor inferior, se envía al cliente en la directiva max-age
. Del mismo modo, en el modo CACHE_ALL_STATIC
, el TTL del cliente sirve como límite para cualquier max-age
que especifique el servidor de origen, de modo que el max-age
enviado al navegador o al cliente no sea superior al TTL del cliente configurado. Si el origen no especifica ningún max-age
, se usa el menor de los valores de TTL de Cloud CDN y del TTL del cliente como max-age
enviado al navegador o al cliente.
Si hay un encabezado Expires
en la respuesta del origen, se elimina y se sustituye por una directiva Cache-Control: max-age
con el TTL adecuado.
En el caso de las respuestas de error, si no se ha definido ningún TTL de almacenamiento en caché negativo, también se elimina el encabezado Cache-Control
.
Como el TTL del cliente se trata como el valor máximo de lo que se envía a los navegadores o clientes, no se puede usar para aumentar el valor de max-age
que se enviaría de otro modo. Si el valor de max-age
que se envía a los navegadores y clientes es inferior al que quieres, debes aumentar el valor de la directiva max-age
en la respuesta devuelta por el origen o ajustar la TTL predeterminada o la configuración de almacenamiento en caché negativo según corresponda.
Por lo general, un valor de TTL de cliente de aproximadamente un día es un buen límite superior práctico. Si se configura un día, los navegadores se registran con esa frecuencia como mínimo y pueden obtener información sobre las invalidaciones de caché que se hayan producido en Cloud CDN. Puedes definir un TTL de cliente mucho más alto (hasta un año) para que el origen y los TTLs configurados controlen por completo lo que se envía al cliente. Esto puede ser útil si no quieres que el navegador realice validaciones más frecuentes en Cloud CDN.
Consola
- En la Google Cloud consola, ve a la página Balanceo de carga.
- Haga clic en el nombre de su balanceador de carga 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.
- Asegúrate de que el modo de caché sea Almacenar contenido estático en caché (opción recomendada) o Forzar el almacenamiento en caché de todo el contenido. No se admite la anulación de los valores de TTL cuando el modo de caché es Usar configuración del origen en función de los encabezados Cache-Control.
- En Tiempo de vida del cliente, selecciona un valor de hasta 1 año.
- Haz clic en Guardar.
gcloud
En el caso de los servicios de backend, usa el comando gcloud compute backend-services
create
o gcloud compute backend-services
update
con la marca --client-ttl
.
En el caso de los segmentos de backend, usa el comando gcloud compute backend-buckets
create
o gcloud compute backend-buckets
update
con la marca --client-ttl
.
gcloud compute backend-services (create | update) BACKEND_SERVICE_NAME --client-ttl=CLIENT_TTL
gcloud compute backend-buckets (create | update) BACKEND_BUCKET_NAME --client-ttl=CLIENT_TTL
Sustituye CLIENT_TTL
por un valor de hasta 31.622.400 segundos (1 año).
API
En el caso de los segmentos de backend, usa la llamada a la API Method: backendBuckets.insert
o Method: backendBuckets.update
.
En el caso de 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
Añade el siguiente fragmento al cuerpo de la solicitud JSON:
"cdnPolicy": { "clientTtl": CLIENT_TTL }
Sustituye CLIENT_TTL
por un valor de hasta 31.622.400 segundos (1 año).
Siguientes pasos
- Para saber por qué se publica contenido obsoleto o caducado, consulta Publicar contenido obsoleto.