Cambiar las anulaciones y la configuración de TTL

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:
  • Modo de caché = FORCE_CACHE_ALL
  • cache mode = CACHE_ALL_STATIC, el tipo de contenido se puede almacenar en caché de forma estática y los encabezados de origen no definen ningún TTL (max-age, s-maxage o Expires).
Se cumplen todas las condiciones siguientes:
  • Modo de caché = CACHE_ALL_STATIC
  • El TTL se define mediante encabezados de origen (max-age, s-maxage o Expires).
  • El TTL especificado en el encabezado de origen es superior al valor de TTL máximo.
Se cumple una de las siguientes condiciones:
  • cache mode = FORCE_CACHE_ALL y el valor de TTL del cliente es inferior al TTL de Cloud CDN
  • cache mode = CACHE_ALL_STATIC y el TTL del cliente es inferior al TTL definido por el encabezado de origen (o el TTL predeterminado si no hay información del encabezado de origen)
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

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

    Ir a Balanceo de carga

  2. Haga clic en el nombre de su balanceador de carga 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. 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.
  7. En Tiempo de vida predeterminado, selecciona un valor.
  8. 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 un s-maxage superior al valor máximo de TTL.
  • La respuesta tiene un encabezado Expires con una fecha posterior a la actual en más de cdnPolicy.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

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

    Ir a Balanceo de carga

  2. Haga clic en el nombre de su balanceador de carga 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. Asegúrate de que el modo de caché sea Almacenar contenido estático en caché (opción recomendada).
  7. En Tiempo de vida máximo, seleccione un valor.
  8. 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

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

    Ir a Balanceo de carga

  2. Haga clic en el nombre de su balanceador de carga 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. 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.
  7. En Tiempo de vida del cliente, selecciona un valor de hasta 1 año.
  8. 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