Cette page explique l'utilisation de la mise en cache négative avec Cloud CDN. La mise en cache négative permet de définir une valeur TTL différente pour chaque code d'état,
afin d'appliquer un contrôle précis sur la mise en cache des erreurs ou des redirections courantes. Ce processus peut réduire la charge pesant sur vos origines et améliorer l'expérience de l'utilisateur final en réduisant la latence des réponses.
Avant de commencer
En savoir plus sur les modes de cache et le contenu statique
Assurez-vous que Cloud CDN est activé. Pour obtenir des instructions, consultez la page Utiliser Cloud CDN.
Si nécessaire, installez la dernière version de Google Cloud CLI :
gcloud components update
Codes d'état et valeurs TTL par défaut
La mise en cache négative s'applique à des codes d'état spécifiques, répertoriés dans le tableau ci-dessous.
Cloud CDN applique les valeurs TTL par défaut suivantes à ces codes d'état :
Code d'état | Signification | Valeur TTL |
---|---|---|
HTTP 300 | Choix multiples | 10 minutes |
HTTP 301 et 308 | Redirections permanentes | 10 minutes |
HTTP 302 et 307 | Redirections temporaires | Non mis en cache par défaut |
HTTP 404 | Introuvables | 120 secondes |
HTTP 405 | Méthode introuvable | 60 secondes |
HTTP 410 | Supprimé | 120 secondes |
HTTP 451 | Inaccessible pour des raisons d'ordre juridique | 120 secondes |
HTTP 501 | Non mis en œuvre | 60 secondes |
Vous pouvez remplacer ces valeurs par défaut via la mise en cache négative en définissant une valeur TTL de cache pour le code d'état HTTP spécifié.
Configurer la mise en cache négative
La mise en cache négative vous permet de configurer votre service pour qu'il mette en cache à la fois les échecs et les réussites. Cela permet à Cloud CDN de protéger les origines des requêtes qui génèrent des erreurs (telles que 404 Introuvable) de la même manière qu'il protège les origines des requêtes qui génèrent des réponses positives.
Console
- Dans la console Google Cloud, accédez à la page Équilibrage de charge.
- Cliquez sur le nom de votre équilibreur de charge d'application externe.
- Cliquez sur Modifier .
- Dans Configuration du backend, sélectionnez un backend, puis cliquez sur Modifier .
- Assurez-vous que l'option Activer Cloud CDN est sélectionnée.
- En bas de la fenêtre, cliquez sur Configurations avancées.
- Cliquez sur Activer la mise en cache négative.
- Cliquez sur Ajouter une règle de mise en cache négative.
- Saisissez un code d'état HTTP.
- Sélectionnez une valeur de TTL (Time To Live).
- Cliquez sur Mettre à jour.
- Cliquez à nouveau sur Mettre à jour.
gcloud
Pour les buckets de backend, exécutez la commande gcloud compute backend-buckets create ou gcloud compute backend-buckets update avec l'option --negative-caching
.
Pour les services de backend, exécutez la commande gcloud compute backend-services create ou gcloud compute backend-services update avec l'option --negative-caching
.
gcloud compute backend-buckets (create | update) BACKEND_BUCKET_NAME --negative-caching
gcloud compute backend-services (create | update) BACKEND_SERVICE_NAME --negative-caching
Pour activer la mise en cache négative de seulement deux réponses d'erreur spécifiques, par exemple, configurez les réponses avec le code d'état 404
pour qu'elles soient mises en cache pendant 60 secondes, et les réponses avec le code d'état 405
pour qu'elles soient mises en cache pendant 120 secondes.
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
Pour les buckets de backend, utilisez l'appel d'API Method: backendBuckets.insert ou Method: backendBuckets.update.
Pour les services de backend, utilisez l'appel d'API Method: backendServices.insert ou Method: backendServices.update.
Utilisez l'un des appels d'API suivants :
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
Ajoutez l'extrait suivant au corps de la requête JSON :
"cdnPolicy": { "negativeCaching": ON, "negativeCachingPolicy": [ { "code": STATUS_CODE, "ttl": TTL_SECONDS } ] }
La mise en cache négative doit être activée pour que vous puissiez configurer les paramètres de la règle de mise en cache négative (negativeCachingPolicy
). Si vous omettez la règle et que la mise en cache négative (negativeCaching
) est activée, Cloud CDN utilise les valeurs par défaut répertoriées dans la section Codes d'état et valeurs TTL par défaut.
Lorsque vous spécifiez une règle de mise en cache négative, veillez à spécifier une valeur TTL de cache pour tous les codes de réponse que vous souhaitez mettre en cache. Cloud CDN n'applique aucune mise en cache négative par défaut lorsqu'une règle existe.
Pour STATUS_CODE, vous pouvez spécifier les codes d'état HTTP suivants :
300
,301
,302
,307
et308
404
,405
,410
,421
,451
501
Pour chaque code d'état, vous pouvez spécifier le nombre de secondes pendant lequel mettre en cache les réponses. Pour désactiver la mise en cache négative du code d'état, excluez ce code de votre stratégie de mise en cache négative.
La valeur maximale autorisée est de 1 800 secondes (30 minutes). Toutefois, les objets rarement utilisés peuvent être supprimés du cache avant la valeur TTL définie.
Lorsque le mode de cache est défini sur CACHE_ALL_STATIC
ou USE_ORIGIN_HEADERS
, la mise en cache négative est appliquée aux réponses qui présentent le code de réponse spécifié et ne comportent pas d'en-tête Cache-Control
ou Expires
.
Lorsque le mode de cache est défini sur FORCE_CACHE_ALL
, la mise en cache négative remplace les en-têtes de mise en cache définis par l'origine. Cloud CDN met en cache la réponse pendant la durée spécifiée par la valeur TTL, ou ne la met pas en cache du tout si aucune valeur TTL n'est définie.
En outre, lorsque le mode de cache est défini sur FORCE_CACHE_ALL
, Cloud CDN modifie également le max-age
envoyé au client dans l'en-tête Cache-Control
. En particulier, si un paramètre TTL est configuré pour une erreur donnée, Cloud CDN utilise le paramètre TTL inférieur et le paramètre de configuration client_ttl
, et envoie un en-tête Cache-Control: public,max-age=N
avec cette valeur. Si aucun paramètre TTL n'est configuré pour une erreur donnée, Cloud CDN supprime l'en-tête Cache-Control
envoyé par l'origine. Cloud CDN supprime également toujours tout en-tête Expires
envoyé par l'origine.
Si la mise en cache négative est initialement activée sur une origine, puis désactivée
manuellement ou en désactivant la mise en cache d'un code de réponse particulier), les erreurs mises en cache
réponses sont considérées comme valides uniquement en fonction de leur Cache-Control
ou de leur Expires
en-têtes. Par conséquent, une fois la mise en cache négative désactivée, une réponse sans instruction d'âge de mise en cache dans ses en-têtes n'est pas diffusée à partir du cache.
Cloud CDN est mis en cache en réponse aux requêtes GET
. Pour en savoir plus, consultez Contenu pouvant être mis en cache.
Chaque entrée de cache est identifiée par une clé de cache.
Désactiver la mise en cache négative
Console
- Dans la console Google Cloud, accédez à la page Équilibrage de charge.
- Cliquez sur le nom de votre équilibreur de charge d'application externe.
- Cliquez sur Modifier .
- Dans Configuration du backend, sélectionnez un backend, puis cliquez sur Modifier .
- Assurez-vous que l'option Activer Cloud CDN est sélectionnée.
- En bas de la fenêtre, cliquez sur Configurations avancées.
- Décochez la case Activer la mise en cache négative.
- Cliquez sur Mettre à jour.
- Cliquez à nouveau sur Mettre à jour.
gcloud
Pour les buckets de backend, exécutez la commande gcloud compute backend-buckets create ou gcloud compute backend-buckets update avec l'option --no-negative-caching
.
Pour les services de backend, exécutez la commande gcloud compute backend-services create ou gcloud compute backend-services update avec l'option --no-negative-caching
.
gcloud compute backend-services (create | update) (BACKEND_SERVICE_NAME | BACKEND_BUCKET_NAME) --no-negative-caching
api
Pour les buckets de backend, utilisez l'appel d'API Method: backendBuckets.insert ou Method: backendBuckets.update.
Pour les services de backend, utilisez l'appel d'API Method: backendServices.insert ou Method: backendServices.update.
Utilisez l'un des appels d'API suivants :
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
Ajoutez l'extrait suivant au corps de la requête JSON :
"cdnPolicy": { "negativeCaching": OFF }