Cambiar la configuración y las anulaciones de TTL

En esta página, se describe cómo cambiar las anulaciones de TTL con Cloud CDN. Las anulaciones de TTL te brindan un control detallado sobre la cantidad de tiempo que Cloud CDN almacena tu contenido en caché antes de volver a validarlo.

La configuración de TTL se resume en la siguiente tabla.

  TTL predeterminado TTL máximo TTL de cliente
Motivo de la configuración Mejora las tasas de aciertos de caché en el contenido que no cambia con frecuencia. Obliga a Cloud CDN a volver a validar el contenido con mayor frecuencia que la especificada por un encabezado de origen. Obliga a los clientes a volver a validar el contenido con mayor frecuencia en Cloud CDN
Se usa en estas situaciones Una de las siguientes opciones es verdadera para obtener una respuesta exitosa:
  • Modo de almacenamiento en caché = FORCE_CACHE_ALL
  • modo de almacenamiento en caché = CACHE_ALL_STATIC, el tipo de contenido se puede almacenar en caché de forma estática y no se establece un TTL mediante encabezados de origen (max-age, s-maxage o Expires).
Se cumplen todas las siguientes condiciones:
  • Modo de almacenamiento en caché = CACHE_ALL_STATIC
  • Un TTL se establece por encabezados de origen (max-age, s-maxage o Expires).
  • El TTL especificado en el encabezado de origen es mayor que el valor de TTL máximo
Se cumple una de las siguientes condiciones:
  • modo de almacenamiento en caché = FORCE_CACHE_ALL, y el valor de TTL del cliente es menor que el de TTL de Cloud CDN
  • modo de almacenamiento en caché = CACHE_ALL_STATIC, y el TTL de cliente es menor que el TTL configurado por el encabezado de origen (o TTL predeterminado si no hay información del encabezado de origen)
Valor predeterminado 3,600 segundos (1 hora) 86,400 segundos (1 día) 3,600 segundos (1 hora)
Valor máx. 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 menor o igual que el TTL máx.

--default-ttl=0
hace que la respuesta se vuelva a validar en el origen
Debe ser menor o igual que el TTL máx.

Antes de comenzar

  • Lee sobre los modos de almacenamiento en caché.

  • 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
    

Establece el TTL predeterminado

Con el fin de mejorar las tasas de aciertos de caché en el contenido que no cambia con frecuencia, puedes anular el TTL predeterminado para que Cloud CDN vuelva a validar el contenido en el origen con menos frecuencia. Ten en cuenta que los objetos a los que se accede con poca frecuencia podrían expulsarse de la caché antes del TTL definido.

Cuando el modo de almacenamiento en caché es FORCE_CACHE_ALL, el TTL predeterminado reemplaza al TTL establecido en todas las respuestas (incluidas las que tienen un TTL establecido por encabezados de origen). En este modo, los clientes ven el TTL predeterminado, ya que Cloud CDN establece los atributos public y max-age de las respuestas que se entregan a los clientes.

Con el modo CACHE_ALL_STATIC, el TTL predeterminado se aplica al contenido almacenado en caché que un origen entrega para respuestas que no tienen un TTL válido existente (encabezado max-age, s-maxage o Expires). En el modo CACHE_ALL_STATIC, el TTL predeterminado no modifica el encabezado Cache-Control que se entrega a los clientes. Para modificar el encabezado Cache-Control en el modo CACHE_ALL_STATIC, debes establecer el TTL del cliente.

Cuando configuras el modo de caché para usar encabezados de origen (USE_ORIGIN_HEADERS), el valor de TTL predeterminado no se aplica y no se puede establecer porque Cloud CDN usa la directiva de origen max-age o s-maxage, o el encabezado Expires.

Consola

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

    Ir a 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. Asegúrate de que el modo de caché sea Almacenar en caché contenido estático (recomendado) o Forzar el almacenamiento en caché de todo el contenido. La anulación de los valores de TTL no es compatible cuando el modo de caché es Usar configuración de origen en función de los encabezados de control de caché.
  7. Selecciona un valor en Tiempo de actividad predeterminado.
  8. 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 --default-ttl.

Para los buckets 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

Reemplaza DEFAULT_TTL por un valor de hasta 31,622,400 segundos (1 año).

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 solicitud JSON:

"cdnPolicy": {
  "defaultTtl": DEFAULT_TTL
}

Reemplaza DEFAULT_TTL por un valor de hasta 31,622,400 segundos (1 año).

Establece el TTL máximo

El TTL máximo (máx.) especifica el TTL máximo permitido dentro de Cloud CDN para el contenido almacenado en caché que entrega un origen.

El TTL de una respuesta se limita al TTL máx. si se cumple una de las siguientes condiciones:

  • La respuesta intenta establecer un valor max-age o s-maxage más alto que el valor máximo de TTL.
  • La respuesta tiene un encabezado Expires de más de cdnPolicy.maxTtl segundos en el futuro.

El parámetro de configuración de TTL máx. no cambia el valor max-age que se envió al cliente. Para obtener más información, consulta Anula el TTL máximo de cliente. El parámetro de configuración de TTL máx. solo afecta por cuánto tiempo Cloud CDN intenta almacenar en caché el contenido.

Este parámetro de configuración solo se usa cuando el modo de almacenamiento en 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 podrían expulsarse de la caché antes del TTL definido.

Con FORCE_CACHE_ALL, el TTL siempre está configurado en el TTL predeterminado. No puedes establecer un TTL máx.

Consola

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

    Ir a 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. Asegúrate de que el modo de caché sea Almacenar en caché contenido estático (recomendado).
  7. Selecciona un valor en Tiempo de actividad máximo.
  8. 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 --max-ttl.

Para los buckets 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

Reemplaza MAX_TTL por un valor de hasta 31,622,400 segundos (1 año).

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 solicitud JSON:

"cdnPolicy": {
  "maxTtl": MAX_TTL
}

Reemplaza MAX_TTL por un valor de hasta 31,622,400 segundos (1 año).

Anula el TTL del cliente

En todos los modos de almacenamiento en caché, Cloud CDN pasa los encabezados Cache-Control al cliente.

El TTL de cliente te permite establecer un TTL máximo para lo que se envía a navegadores o clientes, de modo que los clientes vuelvan a validar el contenido en Cloud CDN con mayor frecuencia, sin necesidad de una revalidación en el origen. De esta manera, el contenido se puede invalidar dentro de Cloud CDN cuando sea necesario, y los navegadores pueden descubrir que el contenido se invalida en cuanto vence el TTL de cliente.

En el modo FORCE_CACHE_ALL, Cloud CDN suele pasar el mismo max-age al cliente que usa de forma interna para el almacenamiento en caché del proxy. Sin embargo, si se especifica un TTL de cliente y es un valor más pequeño, el TTL del cliente se pasa al cliente en la directiva max-age en su lugar. De la misma forma, en el modo CACHE_ALL_STATIC, el TTL del cliente es una fijación para cualquier valor max-age que especifique el servidor de origen a fin de que el valor max-age que se envía al navegador o al cliente no sea más grande que el TTL de cliente configurado. Si el origen no especifica un valor max-age, el menor de los TTL de Cloud CDN y el valor de TTL del cliente se usa como el max-age enviado al navegador o al cliente.

Si hay un encabezado Expires en la respuesta de origen, se quita y se reemplaza por una directiva Cache-Control: max-age con el TTL adecuado. Para las respuestas de error, si no se establece ningún TTL de almacenamiento en caché negativo, también se quita el encabezado Cache-Control.

Debido a que el TTL de cliente se trata como un valor máximo para lo que se envía a los navegadores o clientes, no se puede usar a fin de aumentar el valor max-age que se enviaría de otra manera. Si el valor max-age que se envía a los navegadores y clientes es menor que lo que deseas, debes aumentar el valor de la directiva max-age en la respuesta que muestra el origen o ajustar la configuración del TTL predeterminado o del almacenamiento en caché negativo de forma adecuada.

Por lo general, una configuración de TTL del cliente de alrededor de un día es un buen límite superior práctico. Una configuración de un día significa que los navegadores se verifican con al menos esa frecuencia y pueden obtener información sobre las invalidaciones de caché que pueden haber ocurrido en Cloud CDN. Puedes configurar el TTL del cliente con un valor mucho más alto (hasta un año) como una forma de permitir que el origen y los TTL configurados controlen por completo lo que se envía al cliente. Esto puede ser útil si no deseas que el navegador realice validaciones más frecuentes en Cloud CDN.

Consola

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

    Ir a 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. Asegúrate de que el modo de caché sea Almacenar en caché contenido estático (recomendado) o Forzar el almacenamiento en caché de todo el contenido. La anulación de los valores de TTL no es compatible cuando el modo de caché es Usar configuración de origen en función de los encabezados de control de caché.
  7. En Tiempo de actividad del cliente, selecciona un valor de hasta 1 año.
  8. 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 --client-ttl.

Para los buckets 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

Reemplaza CLIENT_TTL por un valor de hasta 31,622,400 segundos (1 año).

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 solicitud JSON:

"cdnPolicy": {
  "clientTtl": CLIENT_TTL
}

Reemplaza CLIENT_TTL por un valor de hasta 31,622,400 segundos (1 año).

¿Qué sigue?