L'invalidation de cache, parfois appelée suppression définitive de cache, est le processus permettant de déclarer un contenu mis en cache comme non valide. Cela entraîne la suppression de l'entrée du cache, puis le remplissage à partir du serveur d'origine la prochaine fois que le contenu est demandé.
Media CDN accepte plusieurs méthodes pour sélectionner le contenu à invalider :
- Invalidation par hôte et chemin d'URL.
- Invalidation par préfixe d'URL (caractère générique).
- Invalidation par tags de cache, y compris les tags intégrés pour
status
,origin
etcontent-type
.
Vous pouvez combiner ces paramètres d'invalidation pour cibler des réponses mises en cache spécifiques et minimiser la charge sur l'origine lors du prochain remplissage du cache.
Syntaxe d'invalidation acceptée
La syntaxe d'invalidation acceptée est la suivante :
Type | Syntaxe | Exemple |
---|---|---|
Invalidation par hôte | Invalider les réponses mises en cache pour l'hôte spécifié. |
gcloud edge-cache services invalidate-cache
SERVICE_NAME \
|
Invalidation par chemin d'accès | Invalider les réponses mises en cache pour le chemin d'accès ou le préfixe de chemin d'accès spécifié. |
gcloud edge-cache services invalidate-cache
SERVICE_NAME \
gcloud edge-cache services invalidate-cache
SERVICE_NAME \
|
Invalidation par tag de cache (code d'état HTTP, nom d'origine ou type MIME) |
Invalider les réponses mises en cache avec un tag correspondant. Les tags multiples sont traités avec un comportement identique à l'opérateur booléen OR .
|
gcloud edge-cache services invalidate-cache
SERVICE_NAME \
gcloud edge-cache services invalidate-cache
SERVICE_NAME \
|
Remarques :
- Vous pouvez spécifier jusqu'à 10 tags de cache dans une même requête d'invalidation.
- Vous pouvez combiner
host
,path
ettags
dans une même requête d'invalidation. Ils sont traités avec un comportement identique à l'opérateur booléenAND
. - Lorsque plusieurs tags de cache sont spécifiés, ils sont traités avec un comportement identique à l'opérateur booléen
OR
. Par exemple, si vous spécifiez--tags="status=404,origin=staging-origin"
, toutes les réponses avec un tag de cachestatus=404
sont invalidées, à l'instar de toutes les réponses avec un tag de cacheorigin=staging-origin
.
Tags de cache
Les tags de cache (ou clés de substitution) vous permettent d'invalider du contenu en fonction de métadonnées arbitraires.
Ces tags sont définis comme suit :
- Définir l'en-tête HTTP
Cache-Tag
dans une réponse d'origine, avec des tags spécifiés en tant que liste de valeurs séparées par une virgule. - Tags intégrés basés sur le code d'état HTTP de la réponse, le type MIME de l'en-tête de réponse HTTP
Content-Type
ou le nom de l'origine à partir de laquelle la réponse a été extraite.
Lorsque plusieurs tags sont spécifiés dans une même requête d'invalidation, ils sont traités avec un comportement identique à l'opérateur booléen OR
.
Prenons l'exemple suivant :
Vous disposez des objets mis en cache suivants :
- Objet en cache N°1, portant les tags
status=200
etcontent-type=video/mp4
. - Objet en cache N°2, portant les tags
status=404
etcontent-type=text/plain
. - Objet en cache N°3, portant les tags
status=200
etcontent-type=application/x-mpegurl
.
- Objet en cache N°1, portant les tags
Vous envoyez une requête pour invalider les objets avec
tags="status=200,content-type=text/plain"
.Résultat : les trois objets mis en cache sont invalidés en même temps. Cela permet d'éviter d'avoir à spécifier toutes les combinaisons de tags possibles, dont certaines peuvent être inconnues.
Remarques :
- Les tags de cache par défaut ne sont pas inclus dans la réponse destinée au client, car ils reflètent des en-têtes existants (comme la ligne d'état ou le Content-Type) ou des détails de configuration interne.
- Les tags de cache envoyés par l'origine dans l'en-tête de réponse HTTP
Cache-Tag
sont envoyés au client. Si vous souhaitez empêcher leur envoi au client, utilisez la fonctionnalitéresponseHeadersToRemove
sur unerouteRule
pour supprimer l'en-têteCache-Tag
. Pour obtenir des exemples, consultez la documentation sur les en-têtes personnalisés.
Tags intégrés
Les réponses incluent automatiquement les tags de cache suivants pour permettre l'invalidation de contenu en fonction du code d'état, du type MIME ou de l'origine à partir de laquelle le contenu a été extrait. Vous n'avez pas besoin de spécifier ces tags dans vos réponses d'origine.
Tag | Détails |
---|---|
status=HTTP_STATUS_CODE
|
Le tag de cache Par exemple, vous pouvez invalider toutes les réponses HTTP 404 en spécifiant |
content-type=MIME_TYPE
|
Le tag de cache Par exemple, le type MIME d'une playlist HLS est Cela vous permet d'invalider des types de contenu spécifiques. |
origin=ORIGIN_NAME
|
Le tag de cache La valeur |
Limites des tags de cache
Les tags de cache sont soumis aux restrictions suivantes :
- Un tag ne doit pas dépasser 120 octets.
- Le total des noms de tags ne doit pas dépasser 1 Kio (1 024 octets) par objet mis en cache.
- Un objet ne peut pas comporter plus de 10 tags, à l'exclusion des tags par défaut ajoutés par Media CDN.
- Un tag doit être un nom de jeton HTTP valide, tel que défini dans la section 3.2.6 de la norme HTTP RFC 7230
- Un tag ne doit pas inclure les préfixes intégrés
status=
,origin=
oucontent-type=
(qui sont ignorés).
Les tags qui ne respectent pas ces limites ou ne répondent pas à ces exigences sont ignorés. Dans certains cas (par exemple, lorsque les en-têtes de réponse sont trop volumineux), la réponse échoue et n'est pas mise en cache.
Autorisations
L'autorisation networkservices.EdgeCacheServices.invalidateCache
contrôle l'accès à l'API invalidateCache
.
Cette autorisation est incluse dans les rôles IAM (Identity and Access Management) networkservices.edgeCacheAdmin
et networkservices.edgeCacheUser
.
Examples
Les exemples suivants montrent comment invalider les réponses mises en cache pour un service Media CDN.
Vous pouvez combiner les champs host
, path
et tags
dans une même requête d'invalidation pour invalider un ensemble de contenu spécifique.
Invalider par hôte
Console
- Accédez à la page "Media CDN" dans la console Google Cloud
Accéder à Media CDN - Cliquez sur l'onglet Services.
- Cliquez sur votre service.
- Cliquez sur l'onglet Invalidation de cache.
- Pour invalider le schéma de chemin d'accès, saisissez un nom d'hôte suivi d'un chemin d'accès.
Par exemple :
media.example.com/cats
oumedia.example.com/cat*
. Le nom d'hôte ne peut pas inclure*
.
gcloud
gcloud edge-cache services invalidate-cache SERVICE_NAME \ --host=HOST
Remplacez les éléments suivants :
SERVICE_NAME
par le nom du service de cache périphérique.HOST
par le nom d'hôte complet de l'entrée de cache à invalider.
Exemple :
gcloud edge-cache services invalidate-cache SERVICE_NAME \ --host="media.example.com"
Invalider par chemin d'accès
Console
- Accédez à la page "Media CDN" dans la console Google Cloud
Accéder à Media CDN - Cliquez sur l'onglet Services.
- Cliquez sur votre service.
- Cliquez sur l'onglet Invalidation de cache.
- Pour le schéma de chemin d'accès à invalider, saisissez un chemin d'accès.
Par exemple,
/videos/funny.mp4
ou/segments/e94a6b1f731/*
.
gcloud
gcloud edge-cache services invalidate-cache SERVICE_NAME \ --path=PREFIX
Remplacez les éléments suivants :
SERVICE_NAME
par le nom du service de cache périphérique.HOST
par le nom d'hôte des entrées de cache à invalider. Pour mettre en correspondance n'importe quel nom d'hôte, omettez l'option "host".PREFIX
par un préfixe de chemin se terminant par "*" et correspondant aux entrées de cache à invalider.
Exemple :
gcloud edge-cache services invalidate-cache SERVICE_NAME \ --path="/segments/e94a6b1f731/*"
Vous pouvez également invalider un chemin d'accès exact en omettant le caractère *
final. Transmettre --path="/videos/funny.mp4"
invalide la réponse mise en cache correspondant à ce chemin (le cas échéant).
Invalider par tag de cache
Console
L'invalidation par tag de cache n'est pas possible dans la console Google Cloud.
gcloud
gcloud edge-cache services invalidate-cache SERVICE_NAME \ --tags=TAGS
Remplacez les éléments suivants :
SERVICE_NAME
par le nom du service de cache périphérique.TAGS
par une liste de tags séparés par une virgule.
Exemple :
gcloud edge-cache services invalidate-cache SERVICE_NAME \ --tags="status=404,content-type=text/plain"
Latence d'invalidation
L'invalidation de cache sur les milliers d'emplacements de Media CDN se termine généralement en une minute.
Dans certains cas, l'invalidation peut prendre plus de temps en fonction de la charge du système, de la connectivité et du volume de contenu invalidé.
Journalisation
Si les journaux d'audit sont activés, les appels d'invalidation sont consignés dans Cloud Logging.
Limites
Les invalidations ont un débit limité. Si vous dépassez la limite de débit des invalidations, vous recevez un message d'erreur HTTP 429
avec l'état RESOURCE_EXHAUSTED
.
Une invalidation peut être de n'importe quelle taille. Par exemple, l'invalidation de /images/my-image.png
compte comme une seule invalidation. L'invalidation de /images/*
est également considérée comme une seule invalidation.
Ce comportement diffère du comportement dans Cloud CDN. Cloud CDN accepte une invalidation par minute.