Utiliser les remplacements et les paramètres TTL

Cette page explique l'utilisation des remplacements TTL avec Cloud CDN. Les remplacements TTL vous permettent de contrôler avec précision la durée pendant laquelle Cloud CDN met en cache votre contenu avant de le revalider.

Les paramètres TTL sont résumés dans le tableau suivant.

  Valeur TTL par défaut Valeur TTL maximale Valeur TTL client
Motif de configuration Améliorer les taux de succès de cache (hits) pour les contenus qui ne changent pas souvent Forcer Cloud CDN à revalider le contenu plus souvent que l'intervalle spécifié par un en-tête d'origine Forcer les clients à revalider les contenus plus souvent avec Cloud CDN
Utilisé lorsque L'une des affirmations suivantes est vraie :
  • Mode cache = FORCE_CACHE_ALL
  • Mode cache = CACHE_ALL_STATIC , le type de contenu est mis en cache de manière statique et la valeur TTL n'est pas définie par les en-têtes d'origine (max-age ,s-max-age ouExpires).
Toutes les conditions suivantes sont remplies :
  • Mode cache = CACHE_ALL_STATIC
  • Une valeur TTL est définie par les en-têtes d'origine (max-age, s-max-age ou Expires).
  • La valeur TTL spécifiée dans l'en-tête d'origine est supérieure à la valeur TTL maximale.
L'une des affirmations suivantes est vraie :
  • Mode cache = FORCE_CACHE_ALL, et la valeur TTL du client est inférieure à la valeur TTL par défaut.
  • Mode cache = CACHE_ALL_STATIC, et la valeur TTL du client est inférieure à la valeur TTL définie par l'en-tête d'origine (ou à la valeur TTL par défaut si aucune information d'en-tête d'origine n'est présente).
Valeur par défaut 3 600 secondes (1 heure) 86 400 secondes (1 jour) 3 600 secondes (1 heure)
Valeur maximale autorisée 31 622 400 secondes (1 an) 31 622 400 secondes (1 an) 86 400 secondes (1 jour)
Remarques Doit être inférieure ou égale à la valeur TTL maximale

--default-ttl=0
force la revalidation de la réponse à l'origine.
Doit être inférieur ou égal à la valeur TTL maximale.

Avant de commencer

  • Consultez la section concernant les modes de cache.

  • 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
    

Définir la valeur TTL par défaut

Pour améliorer les taux de succès de cache (hits) pour le contenu qui ne change pas souvent, vous pouvez remplacer la valeur TTL par défaut afin que Cloud CDN revalide moins fréquemment les contenus à l'origine. Notez que les objets rarement utilisés peuvent être supprimés du cache avant la valeur TTL définie.

Lorsque le mode de cache est FORCE_CACHE_ALL, la valeur TTL par défaut remplace la valeur TTL définie dans toutes les réponses (y compris celles dont la valeur TTL est définie par les en-têtes d'origine). Dans ce mode, la valeur TTL par défaut est visible par les clients, car Cloud CDN définit les attributs public et max-age des réponses diffusées aux clients.

En mode CACHE_ALL_STATIC, la valeur TTL par défaut s'applique au contenu mis en cache diffusé par une origine, pour les réponses qui n'ont pas de valeur TTL valide (en-tête max-age, s-max-age ou Expires). En mode CACHE_ALL_STATIC, la valeur TTL par défaut ne modifie pas l'en-tête Cache-Control diffusé aux clients. Pour modifier l'en-tête Cache-Control en mode CACHE_ALL_STATIC, vous devez définir la valeur TTL du client.

Lorsque vous définissez le mode cache pour utiliser des en-têtes d'origine (USE_ORIGIN_HEADERS), la valeur TTL par défaut ne s'applique pas et ne peut pas être définie, car Cloud CDN utilise à la place l'instruction d'origine max-age ou s-max-age, ou l'en-tête Expires.

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. Assurez-vous que le mode de cache est défini sur Mettre en cache le contenu statique (recommandé) ou Forcer la mise en cache de tous les contenus. Le remplacement des valeurs TTL n'est pas disponible lorsque le mode de cache est défini sur Utiliser les paramètres d'origine basés sur les en-têtes Cache-Control.
  7. Sous Valeur TTL par défaut, saisissez une valeur.
  8. Cliquez sur Enregistrer.

gcloud

Pour les services de backend, exécutez la commande gcloud compute backend-services create ou gcloud compute backend-services update avec l'option --default-ttl.

Pour les buckets backend, exécutez la commande gcloud compute backend-buckets create ou gcloud compute backend-buckets update avec l'option --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

Remplacez DEFAULT_TTL par une valeur allant jusqu'à 31 622 400 secondes (un an).

API

Pour les buckets 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": {
  "defaultTtl": DEFAULT_TTL
}

Remplacez DEFAULT_TTL par une valeur allant jusqu'à 31 622 400 secondes (un an).

Définir la valeur TTL maximale

La valeur TTL maximale (max) spécifie la valeur TTL maximale autorisée dans Cloud CDN pour le contenu mis en cache diffusé par une origine.

La valeur TTL d'une réponse est limitée par la valeur TTL maximale si l'une des conditions suivantes est remplie :

  • La réponse tente de définir une valeur max-age ou s-maxage supérieure à la valeur TTL maximale.
  • La réponse comporte un en-tête Expires correspondant à plus de cdnPolicy.maxTtl secondes dans le futur.

Le paramètre TTL maximal ne modifie pas la valeur max-age envoyée au client. Pour en savoir plus, consultez la section Remplacer la valeur TTL maximale du client. Le paramètre TTL maximal n'affecte que la durée pendant laquelle Cloud CDN tente de mettre en cache le contenu.

Ce paramètre n'est utilisé que lorsque le mode de cache est défini sur CACHE_ALL_STATIC. La valeur maximale autorisée est de 31 622 400 secondes (un an). Notez que les objets rarement utilisés peuvent être supprimés du cache avant la valeur TTL définie.

Avec FORCE_CACHE_ALL, la valeur TTL est toujours définie sur la valeur TTL par défaut. Vous ne pouvez pas définir de valeur TTL maximale.

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. Assurez-vous que le mode de cache est défini sur Mettre en cache le contenu statique (recommandé).
  7. Sous Valeur TTL maximale, sélectionnez une valeur.
  8. Cliquez sur Enregistrer.

gcloud

Pour les services de backend, exécutez la commande gcloud compute backend-services create ou gcloud compute backend-services update avec l'option --max-ttl.

Pour les buckets backend, exécutez la commande gcloud compute backend-buckets create ou gcloud compute backend-buckets update avec l'option --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

Remplacez MAX_TTL par une valeur allant jusqu'à 31 622 400 secondes (un an).

API

Pour les buckets 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": {
  "maxTtl": MAX_TTL
}

Remplacez MAX_TTL par une valeur allant jusqu'à 31 622 400 secondes (un an).

Remplacer la valeur TTL du client

Pour tous les modes cache, Cloud CDN transmet les en-têtes Cache-Control au client.

La valeur TTL client vous permet de définir une valeur TTL maximale pour les navigateurs ou les clients afin que ces clients puissent revalider le contenu avec Cloud CDN de manière plus régulière, sans aucune revalidation nécessaire à l'origine. Ainsi, le contenu peut être invalidé dans Cloud CDN si nécessaire, et les navigateurs peuvent détecter que le contenu n'est plus valide dès l'expiration du délai TTL client.

En mode FORCE_CACHE_ALL, Cloud CDN transmet normalement la même valeur max-age au client qu'il utilise en interne pour la mise en cache du proxy. Toutefois, en cas de valeur TTL client spécifiée inférieure, celle-ci est transmise au client dans l'instruction max-age. De même, en mode CACHE_ALL_STATIC, la valeur TTL client sert à bloquer toute valeur maximale max-age spécifiée par le serveur d'origine, de sorte que la valeur max-age envoyée au navigateur ou au client ne soit pas supérieure à la valeur TTL client configurée. Si aucune valeur max-age n'est spécifiée par l'origine, la valeur la plus faible entre la valeur TTL par défaut et la valeur TTL du client est utilisée en tant que valeur max-age envoyée au navigateur ou au client.

Si un en-tête Expires est présent dans la réponse d'origine, il est supprimé et remplacé par une instruction Cache-Control: max-age avec la valeur TTL appropriée.

Comme la valeur TTL du client est traitée comme une valeur maximale pour les éléments envoyés aux navigateurs ou aux clients, elle ne peut pas être utilisée pour augmenter la valeur max-age qui serait envoyée autrement. Si la valeur max-age envoyée aux navigateurs et aux clients n'est pas suffisante pour vous, vous devez augmenter la valeur de l'instruction max-age dans la réponse renvoyée par l'origine ou ajuster la valeur Valeur TTL par défaut.

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. Assurez-vous que le mode de cache est défini sur Mettre en cache le contenu statique (recommandé) ou Forcer la mise en cache de tous les contenus. Le remplacement des valeurs TTL n'est pas disponible lorsque le mode de cache est défini sur Utiliser les paramètres d'origine basés sur les en-têtes Cache-Control.
  7. Sous Valeur TTL client, sélectionnez une valeur inférieure ou égale à 86 400 secondes.
  8. Cliquez sur Enregistrer.

gcloud

Pour les services de backend, exécutez la commande gcloud compute backend-services create ou gcloud compute backend-services update avec l'option --client-ttl.

Pour les buckets backend, exécutez la commande gcloud compute backend-buckets create ou gcloud compute backend-buckets update avec l'option --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

Remplacez CLIENT_TTL par une valeur allant jusqu'à 86 400 secondes (un jour).

API

Pour les buckets 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": {
  "clientTtl": CLIENT_TTL
}

Remplacez CLIENT_TTL par une valeur allant jusqu'à 86 400 secondes (un jour).