Cette page explique comment changer les modes cache avec Cloud CDN. Les modes cache vous permettent de configurer la façon dont Cloud CDN met en cache votre contenu.
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
Définir le mode cache
Cloud CDN propose trois modes de cache, qui définissent la manière dont les réponses sont mises en cache, si Cloud CDN respecte les instructions de cache envoyées par l'origine et comment les valeurs TTL de cache sont appliquées.
Le tableau suivant décrit les modes de cache disponibles :
Mode de cache | Comportement |
---|---|
CACHE_ALL_STATIC |
Met automatiquement en cache les réponses réussies avec
contenu statique qui ne sont pas
ne pouvant pas être mises en cache.
Les réponses issues de l'origine qui définissent des instructions de mise en cache valides sont également mises en cache. Il s'agit du comportement par défaut pour les backends pour lesquels Cloud CDN a été activé et qui ont été créés à l'aide de Google Cloud CLI ou de l'API REST. |
USE_ORIGIN_HEADERS |
Exige que les réponses issues de l'origine définissent des instructions de cache et des en-têtes de mise en cache valides. Sans ces instructions, les réponses réussies sont transférées depuis l'origine. |
FORCE_CACHE_ALL |
Met en cache les réponses réussies sans condition, en ignorant les instructions de cache définies par l'origine. Ce mode n'est pas approprié si le backend diffuse du contenu privé et spécifique à l'utilisateur, par exemple des réponses HTML dynamiques ou d'API. |
Les réponses d'erreur peuvent être mises en cache même en l'absence d'instructions de cache valides.
Avant de définir le mode de cache sur FORCE_CACHE_ALL
, prenez en compte les comportements suivants :
Pour les URL et les cookies signés,
FORCE_CACHE_ALL
remplace l'âge maximal spécifié via le paramètre Âge maximal de l'entrée de cache dans Google Cloud Console ou l'optiongcloud --signed-url-cache-max-age
.FORCE_CACHE_ALL
modifie la valeur TTL (Time To Live) du contenu précédemment mis en cache. En appliquant cette modification, certaines entrées auparavant considérées comme nouvelles (à cause de valeurs TTL plus longues provenant d'en-têtes d'origine) peuvent désormais être considérées comme obsolètes.FORCE_CACHE_ALL
remplace les instructions de cache (Cache-Control
etExpires
), mais ne remplace pas les autres en-têtes de réponse d'origine. En particulier, un en-têteVary
est toujours utilisé et peut supprimer la mise en cache, même en présence deFORCE_CACHE_ALL
. Pour en savoir plus, consultez la section En-têtes Vary.
Pour configurer les modes de cache pour un backend compatible avec Cloud CDN, procédez comme suit :
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.
- Sous Mode de cache, sélectionnez l'une des options suivantes :
- Mettre en cache le contenu statique (recommandé) : le contenu statique correspond aux éléments Web qui ne changent pas pour chaque utilisateur. Le contenu statique est basé sur l'en-tête
Content-Type
de la réponse. Pour en savoir plus, consultez la section Contenu statique. - Utiliser les paramètres d'origine basés sur les en-têtes Cache-Control : réponses de cache comportant des instructions de cache valides dans les en-têtes de réponse.
- Forcer la mise en cache de tous les contenus : mettez en cache l'ensemble du contenu diffusé par l'origine, en ignorant les instructions
private
ouno-store
.
- Mettre en cache le contenu statique (recommandé) : le contenu statique correspond aux éléments Web qui ne changent pas pour chaque utilisateur. Le contenu statique est basé sur l'en-tête
- 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 --cache-mode
.
Pour les buckets backend, exécutez la commande gcloud compute backend-buckets
create
ou gcloud compute backend-buckets
update
avec l'option --cache-mode
.
gcloud compute backend-services (create | update) BACKEND_SERVICE_NAME --cache-mode=CACHE_MODE
gcloud compute backend-buckets (create | update) BACKEND_BUCKET_NAME --cache-mode=CACHE_MODE
Remplacez CACHE_MODE
par l'un des éléments suivants :
CACHE_ALL_STATIC
(par défaut) : met automatiquement en cache le contenu statique. Les réponses marquées comme ne pouvant pas être mises en cache (instructionsprivate
ouno-store
dans les en-têtes de réponseCache-Control
) ne sont pas mises en cache. Pour mettre en cache le contenu dynamique, celui-ci doit comporter des en-têtes de mise en cache valides.USE_ORIGIN_HEADERS
: exige que l'origine définisse des en-têtes de mise en cache valides pour mettre en cache le contenu. Sans ces en-têtes, les réponses ne sont pas mises en cache à la périphérie de Google et nécessitent un trajet complet vers l'origine à chaque demande, ce qui peut affecter les performances et augmenter la charge sur le serveur d'origine.FORCE_CACHE_ALL
: met en cache tout le contenu (c'est-à-dire les réponses réussies), en ignorant les instructionsprivate
ouno-store
dans les en-têtes de réponseCache-Control
. Cela peut entraîner une mise en cache du contenu privé propre à l'utilisateur (informations personnelles de l'utilisateur). Vous ne devez activer cette fonctionnalité que sur les backends qui ne diffusent pas de contenu privé ou dynamique, tels que des buckets Cloud Storage. N'activez pas cette option sur des backends qui diffusent du contenu privé ou dynamique.
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": { "cacheMode": (CACHE_ALL_STATIC | USE_ORIGIN_HEADERS | FORCE_CACHE_ALL)
Remplacez CACHE_MODE
par l'un des éléments suivants :
CACHE_ALL_STATIC
(par défaut): met automatiquement en cache les données statiques content si l'origine n'est pas définie en-têtes de mise en cache valides. Les réponses marquées comme ne pouvant pas être mises en cache (instructionsprivate
ouno-store
dans les en-têtes de réponseCache-Control
) ne sont pas mises en cache. Pour mettre en cache le contenu dynamique, celui-ci doit comporter des en-têtes de mise en cache valides.USE_ORIGIN_HEADERS
: exige que l'origine définisse des en-têtes de mise en cache valides pour mettre en cache le contenu. Sans ces en-têtes, les réponses ne sont pas mises en cache à la périphérie de Google et nécessitent un trajet complet vers l'origine à chaque demande, ce qui peut affecter les performances et augmenter la charge sur le serveur d'origine.FORCE_CACHE_ALL
: met en cache tout le contenu (c'est-à-dire les réponses réussies), en ignorant les instructionsprivate
ouno-store
dans les en-têtes de réponseCache-Control
. Cela peut entraîner une mise en cache du contenu privé propre à l'utilisateur (informations personnelles de l'utilisateur). Vous ne devez activer cette fonctionnalité que sur les backends qui ne diffusent pas de contenus privés ou dynamiques, tels que des buckets Cloud Storage.