En esta página, se proporcionan instrucciones para usar el almacenamiento en caché negativo con Cloud CDN. El almacenamiento en caché negativo permite establecer un tiempo de actividad (TTL) diferente para cada código de estado.
El propósito de esto es aplicar un control detallado sobre el almacenamiento en caché para redireccionamientos o errores comunes. Esto puede reducir la carga tus orígenes y mejorar la experiencia del usuario final mediante la reducción de la latencia de respuesta.
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
Códigos de estado y TTL predeterminados
El almacenamiento en caché negativo se aplica a los códigos de estado específicos, que se enumeran en la siguiente tabla.
Cloud CDN aplica los siguientes TTL predeterminados a estos códigos de estado:
| Código de estado | Significado | TTL |
|---|---|---|
| HTTP 300 | Opción múltiple | 10 minutos |
| HTTP 301 y 308 | Redireccionamientos permanentes | 10 minutos |
| HTTP 302 y 307 | Redireccionamientos temporales | No se almacena en caché de forma predeterminada |
| HTTP 404 | No encontrado | 120 segundos |
| HTTP 405 | No se encontró el método | 60 segundos |
| HTTP 410 | No disponible | 120 segundos |
| HTTP 451 | No disponible por motivos legales | 120 segundos |
| HTTP 501 | No se implementó | 60 segundos |
Puedes anular estos valores predeterminados mediante el almacenamiento en caché negativo a fin de establecer un TTL de caché para el código de estado HTTP especificado.
Configura el almacenamiento en caché negativo
El almacenamiento en caché negativo te permite configurar tu servicio para almacenar en caché las fallas y los éxitos. Esto le permite a Cloud CDN proteger los orígenes de las solicitudes que generan errores (como 404 No encontrado) de la misma manera que protege a los orígenes de las solicitudes que generan respuestas exitosas.
Consola
- 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 la parte inferior de la ventana, haz clic en Configuración avanzada.
- Haz clic en Habilitar almacenamiento en caché negativo.
- Haz clic en Add negative caching policy.
- Ingresa un código de estado HTTP.
- Selecciona un tiempo de actividad en caché (TTL).
- Haz clic en Actualizar.
- Vuelve a hacer clic en Actualizar.
gcloud
En los buckets de backend, usa el comando gcloud compute backend-buckets
create o
gcloud compute backend-buckets
update con la marca --negative-caching.
En los servicios de backend, usa el comando gcloud compute backend-services
create o
gcloud compute backend-services update con la marca --negative-caching.
gcloud compute backend-buckets (create | update) BACKEND_BUCKET_NAME
--negative-caching
gcloud compute backend-services (create | update) BACKEND_SERVICE_NAME
--negative-caching
Si deseas habilitar el almacenamiento en caché negativo de solo dos respuestas de error específicas, por ejemplo, configura las respuestas con el código de estado 404 para que se almacenen en caché durante 60 segundos y las respuestas con el código de estado 405 para que se almacenen en caché durante 120 segundos.
gcloud compute backend-services update BACKEND_SERVICE_NAME \
--negative-caching \
--cache-mode=CACHE_ALL_STATIC \
--default-ttl=86400 \
--negative-caching-policy='404=60,405=120'
api
En los buckets de backend, usa la llamada a la API Method: backendBuckets.insert o Method: backendBuckets.update.
En 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": {
"negativeCaching": ON,
"negativeCachingPolicy": [
{
"code": STATUS_CODE,
"ttl": TTL_SECONDS
}
]
}
El almacenamiento en caché negativo debe estar habilitado para establecer la configuración de negativeCachingPolicy. Si omites la política y tienes negativeCaching habilitado, Cloud CDN usa los valores predeterminados enumerados en Códigos de estado y TTL predeterminados.
Cuando especifiques una política de almacenamiento en caché negativo, asegúrate de especificar un TTL de caché para todos los códigos de respuesta que deseas almacenar en caché. Cloud CDN no aplica ningún almacenamiento en caché negativo predeterminado cuando existe una política.
Para STATUS_CODE, puedes especificar los siguientes códigos de estado HTTP:
300,301,302,307,308404,405,410,421,451501
Por cada código de estado, puedes especificar una cantidad de segundos para que se almacenen en caché las respuestas. Para inhabilitar el almacenamiento en caché negativo para el código de estado, excluye el código de tu política de almacenamiento en caché negativo.
El valor máximo permitido es de 1,800 segundos (30 minutos). Sin embargo, los objetos a los que se accede con poca frecuencia pueden expulsarse de la caché antes del TTL definido.
Cuando el modo de almacenamiento en caché se establece como CACHE_ALL_STATIC o USE_ORIGIN_HEADERS, el almacenamiento en caché negativo se aplica a las respuestas con códigos de estado HTTP específicos, como 404, 501, 502 o 503. El período durante el cual se almacenan en caché estas respuestas negativas se determina según la siguiente regla de precedencia:
Si la respuesta negativa del origen incluye encabezados de respuesta
explicit Cache-ControloExpires, Cloud CDN almacena en caché la respuesta negativa durante el período que se especifica en estos encabezados.Por ejemplo, si tu origen devuelve
404 Not Foundcon un parámetro de configuraciónCache-Control: public,max-age=60, el código de estado404se almacena en caché durante60segundos y se ignora la política de almacenamiento en caché negativo para esa solicitud específica.Si la respuesta negativa del origen no tiene encabezados
Cache-ControlniExpires, Cloud CDN aplica los TTL de la política de almacenamiento en caché negativo configurados. Por ejemplo, si tu origen devuelve404 Not Foundsin encabezados de almacenamiento en caché, la respuesta se almacena en caché durante el TTL especificado encdnPolicy.negativeCachingPolicypara el404 status code.
Cuando el modo de almacenamiento en caché se establece en FORCE_CACHE_ALL, el almacenamiento en caché negativo anula los encabezados de almacenamiento en caché que establece el origen. Cloud CDN almacena en caché la respuesta durante el período que especifica el TTL, o no la almacena en caché si no está configurado el TTL.
Además, cuando el modo de caché se establece en FORCE_CACHE_ALL, Cloud CDN también modifica el max-age enviado al cliente en el encabezado Cache-Control. En particular, si un error determinado tiene un parámetro de configuración de TTL definido, Cloud CDN considera el valor de TTL más bajo y la configuración de client_ttl, y envía un encabezado Cache-Control: public,max-age=N con ese valor. Si un error determinado no tiene un parámetro de configuración de TTL definido, Cloud CDN quita cualquier encabezado Cache-Control que envíe el origen. Cloud CDN también siempre quita cualquier encabezado Expires que envíe el origen.
Si un origen tiene habilitado el almacenamiento en caché negativo inicialmente, pero luego se inhabilita (ya sea de forma manual o inhabilitando el almacenamiento en caché para un código de respuesta en particular), las respuestas de error almacenadas en caché se consideran válidas solo en función de sus encabezados Cache-Control o Expires. Por lo tanto, una vez que se inhabilita el almacenamiento en caché negativo, no se entrega desde la caché una respuesta sin directivas de antigüedad de almacenamiento en caché en sus encabezados.
Cloud CDN almacena en caché en respuesta a solicitudes GET. Para obtener más información, consulta Contenido que se puede almacenar en caché.
Cada entrada de caché se identifica con una clave de caché.
Inhabilita el almacenamiento en caché negativo
Consola
- 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 la parte inferior de la ventana, haz clic en Configuración avanzada.
- Desmarca la casilla de verificación junto a Habilitar el almacenamiento en caché negativo.
- Haz clic en Actualizar.
- Vuelve a hacer clic en Actualizar.
gcloud
En los buckets de backend, usa el comando gcloud compute backend-buckets
create o
gcloud compute backend-buckets
update con la marca --no-negative-caching.
En los servicios de backend, usa el comando gcloud compute backend-services
create o
gcloud compute backend-services
update con la marca --no-negative-caching.
gcloud compute backend-services (create | update) (BACKEND_SERVICE_NAME | BACKEND_BUCKET_NAME)
--no-negative-caching
API
En los buckets de backend, usa la llamada a la API Method: backendBuckets.insert o Method: backendBuckets.update.
En 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": {
"negativeCaching": OFF
}