Diffuser du contenu obsolète

Cette page fournit des informations sur la diffusion de contenu obsolète et expiré avec Cloud CDN. La diffusion de contenu obsolète permet au cache global de Google de continuer à diffuser du contenu lorsque le serveur d'origine est inaccessible ou renvoie des erreurs à Cloud CDN.

Les raisons à cela sont les suivantes :

  • Vous préférez diffuser du contenu obsolète auprès des utilisateurs plutôt que de leur renvoyer des erreurs.
  • La diffusion de contenu obsolète évite une latence lorsque le cache reçoit une requête de contenu qui vient d'expirer. Au lieu d'attendre une revalidation synchrone sur le backend, le cache diffuse le contenu obsolète qui vient d'expirer, tout en revalidant le contenu de manière asynchrone en arrière-plan.

Le paramètre stale-while-revalidate diffuse du contenu existant à partir du cache (s'il est disponible) pendant un nombre de secondes spécifié après l'expiration du délai d'expiration de l'entrée de cache, tout en revalidant le contenu avec l'origine.

Vous pouvez définir l'en-tête d'origine en définissant l'en-tête de réponse HTTP stale-while-revalidate.

Cloud CDN peut l'activer en votre nom en définissant le paramètre cdnPolicy.serveWhileStale. Ce paramètre détermine le délai pendant lequel Cloud CDN peut continuer à diffuser une version obsolète une fois la réponse arrivée à expiration. La valeur par défaut est 86400s (1 jour).

Le paramètre serveWhileStale combine à la fois les fonctionnalités de mise en cache HTTP stale-while-revalidate et l'élément stale-if-error.

Les valeurs par défaut, minimale et maximale sont les suivantes :

  • Valeur par défaut : 86 400 secondes (un jour)
  • Minimale : 0 seconde (désactive la fonctionnalité)
  • Maximale : 604 800 secondes (une semaine)

Le contenu obsolète est diffusé jusqu'à la limite spécifiée après l'expiration du délai d'expiration du cache, définie par les en-têtes max-age, s-max-age ou Expires. Pour plus d'informations, consultez la section Délais d'expiration et requêtes de validation.

Si un cache périphérique Cloud CDN n'a pas de copie en cache de l'objet pour le rendre obsolète ou si la valeur TTL maximale est obsolète, Cloud CDN valide de manière synchrone le contenu avec l'origine. Si l'origine renvoie une erreur à ce moment-là, Cloud CDN renvoie l'erreur d'origine.

Instruction de requête du client max-stale

Les clients peuvent demander un délai d'expiration plus court en spécifiant une instruction de contrôle de cache max-stale. Si spécifiée, cette instruction contrôle le niveau d'obsolescence acceptable par le client.

Si le contenu mis en cache est plus obsolète que la valeur max-stale du client, Cloud CDN revalide le contenu avant de le diffuser.

Le client ne peut pas demander une valeur max-stale supérieure à la valeur configurée avec l'option de configuration serve-while-stale et l'instruction de contrôle de cache stale-while-revalidate à partir de l'origine.

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 du SDK Cloud :

    gcloud components update
    

Diffuser du contenu obsolète pendant une revalidation

Console

  1. Dans Google Cloud Console, accédez à la page Équilibrage de charge.

    Accéder à la page Équilibrage de charge

  2. Cliquez sur le nom de votre équilibreur de charge HTTP(S) externe.
  3. Cliquez sur Modifier .
  4. Dans Configuration du backend, sélectionnez un backend, puis cliquez sur Modifier .
  5. Assurez-vous que l'option Activer Cloud CDN est sélectionnée.
  6. En bas de la fenêtre, cliquez sur Configurations avancées.
  7. Sous Diffuser si obsolète, sélectionnez l'une des options suivantes :
    • 1 minute
    • 5 minutes
    • 10 minutes
    • 30 minutes
    • 1 jour (recommandé)
    • 7 jours
  8. Cliquez sur Mettre à jour.
  9. Cliquez à nouveau sur Mettre à jour.

gcloud

Pour les buckets de backend, exécutez la commande gcloud beta compute backend-buckets create ou gcloud beta compute backend-buckets update avec l'option --serve-while-stale.

Pour les services de backend, exécutez la commande gcloud beta compute backend-services create ou gcloud beta compute backend-services update avec l'option --serve-while-stale.

gcloud beta compute backend-buckets (create | update) BACKEND_BUCKET_NAME
    --serve-while-stale=SECONDS
gcloud beta compute backend-services (create | update) BACKEND_SERVICE_NAME
    --serve-while-stale=SECONDS

Exemple :

gcloud beta compute backend-services update my-backend-service
    --serve-while-stale=180s

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/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

Ajoutez l'extrait suivant au corps de la requête JSON :

"cdnPolicy": {
  "serveWhileStale": SECONDS
}

Désactiver la diffusion de contenu obsolète

Console

  1. Dans Google Cloud Console, accédez à la page Équilibrage de charge.

    Accéder à la page Équilibrage de charge

  2. Cliquez sur le nom de votre équilibreur de charge HTTP(S) externe.
  3. Cliquez sur Modifier .
  4. Dans Configuration du backend, sélectionnez un backend, puis cliquez sur Modifier .
  5. Assurez-vous que l'option Activer Cloud CDN n'est pas sélectionnée.
  6. En bas de la fenêtre, cliquez sur Configurations avancées.
  7. Sous Diffuser si obsolète, sélectionnez Désactiver la diffusion si obsolète.
  8. Cliquez sur Mettre à jour.
  9. Cliquez à nouveau sur Mettre à jour.

gcloud

Pour les buckets de backend, exécutez la commande gcloud beta compute backend-buckets create ou gcloud beta compute backend-buckets update avec l'option --no-serve-while-stale.

Pour les services de backend, exécutez la commande gcloud beta compute backend-services create ou gcloud beta compute backend-services update avec l'option --no-serve-while-stale.

gcloud beta compute backend-services (create | update) (BACKEND_SERVICE_NAME | BACKEND_BUCKET_NAME)
    --no-serve-while-stale

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/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

Ajoutez l'extrait suivant au corps de la requête JSON :

"cdnPolicy": {
  "serveWhileStale": 0
}