En esta página, se proporcionan instrucciones para usar el almacenamiento en caché negativo con Cloud CDN. El almacenamiento en caché negativo te permite establecer un 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 del SDK de Cloud:
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 404 | No encontrado | 120 segundos |
HTTP 405 | No se encontró el método | 60 segundos |
HTTP 410 | No disponible | 120 segundos |
HTTP 421 | Solicitud mal dirigida | 60 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.
Cuando un backend no tiene un buen rendimiento, puede tener un aumento en el tráfico porque las respuestas suelen ser éxitos que se almacenan en caché. Durante el período de latencia alta, las respuestas se recuperan cada vez, lo que puede retrasar que el backend vuelva a estar en línea. Cuando almacenas en caché las respuestas de fallas, como los errores internos del servidor 500, durante períodos breves, Cloud CDN proporciona tiempo para la recuperación de errores.
Console
- En Google Cloud Console, ve a la página Balanceo de cargas.
- Haz clic en el nombre del balanceador de cargas de HTTP(S) 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 Agregar política de almacenamiento en caché negativo.
- Ingresa un código de estado HTTP.
- Selecciona el tiempo de almacenamiento en caché (TTL).
- Haz clic en Actualizar.
- Haz clic en Actualizar de nuevo.
gcloud
En los buckets de backend, usa el comando gcloud beta compute backend-buckets create o gcloud beta compute backend-buckets update con la marca --negative-caching
.
En los servicios de backend, usa el comando gcloud beta compute backend-services create o gcloud beta compute backend-services update con la marca --negative-caching
.
gcloud beta compute backend-buckets (create | update) BACKEND_BUCKET_NAME --negative-caching
gcloud beta 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 beta 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/beta/projects/PROJECT_ID/global/backendBuckets PUT https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/global/backendBuckets/BACKEND_BUCKET POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/global/backendServices PUT https://compute.googleapis.com/compute/beta/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 códigos de estado HTTP 300
, 301
, 308
, 404
, 405
, 410
, 421
, 451
y 501
.
Puedes especificar una cantidad de segundos para almacenar respuestas en caché en cada código de estado. Omite el campo de TTL para inhabilitar el almacenamiento en caché negativo en el código de estado.
El valor máximo permitido es de 1800 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 el código de respuesta especificado que no cuentan con cache-control
ni encabezados expires
. Cuando el modo de almacenamiento en caché se establece como FORCE_CACHE_ALL
, el almacenamiento en caché negativo se aplica a todas las respuestas con el código de respuesta especificado y anula los encabezados de almacenamiento en caché.
Inhabilita el almacenamiento en caché negativo
Console
- En Google Cloud Console, ve a la página Balanceo de cargas.
- Haz clic en el nombre del balanceador de cargas de HTTP(S) 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.
- Borra las políticas de almacenamiento en caché negativo.
- Desmarca la casilla de verificación junto a Habilitar almacenamiento en caché negativo.
- Haz clic en Actualizar.
- Haz clic en Actualizar de nuevo.
gcloud
En los buckets de backend, usa el comando gcloud beta compute backend-buckets create o gcloud beta compute backend-buckets update con la marca --no-negative-caching
.
En los servicios de backend, usa el comando gcloud beta compute backend-services create o gcloud beta compute backend-services update con la marca --no-negative-caching
.
gcloud beta 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/beta/projects/PROJECT_ID/global/backendBuckets PUT https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/global/backendBuckets/BACKEND_BUCKET POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/global/backendServices PUT https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE
Agrega el siguiente fragmento al cuerpo de solicitud JSON:
"cdnPolicy": { "negativeCaching": OFF }