Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Invalidation du contenu par des balises de cache
Amazon CloudFront prend en charge les invalidations de balises, ce qui vous permet d'invalider des objets mis en cache en fonction de balises sémantiques plutôt que de chemins d'URL. Cela vous permet de contrôler de manière flexible l'invalidation du cache sans que votre structure d'URL corresponde à votre stratégie d'invalidation.
Comment fonctionne l'invalidation des balises
-
Configurez votre distribution : ajoutez un
CacheTagConfigà votre distribution en spécifiant le nom d'en-tête HTTP que votre origine utilise pour renvoyer les balises de cache. -
Marquez les objets à votre origine : lorsque vous renvoyez un objet que vous souhaitez mettre en cache avec des balises, configurez votre origine pour inclure l'en-tête spécifié dans les réponses HTTP avec des valeurs de balise séparées par des virgules.
HTTP/1.1 200 OK Content-Type: text/html x-amz-meta-cache-tag: product:electronics, category:tv, brand:example Cache-Control: max-age=3600Note
Pour les origines S3, vous pouvez associer des balises de cache à vos objets S3 sous forme de métadonnées. Vous pouvez ajouter une entrée de métadonnées avec la clé de votre choix (exemple :
cache-tag) et une liste de balises séparées par des virgules comme valeur (exemple :product:electronics, category:tv, brand:example).S3 affiche les métadonnées des objets sous forme d'en-têtes de réponse préfixés par
x-amz-meta-<Key>, de sorte qu'une clé de métadonnées decache-tagserait renvoyée sous forme d'x-amz-meta-cache-tagen-tête. Vous pouvez configurer leHeaderNamein yourCacheTagConfigx-amz-meta-cache-tagpour activer l'envoi d'invalidations à ces balises.Note
Vous pouvez également associer une fonction Lambda @Edge de réponse d'origine à votre comportement de cache pour ajouter des en-têtes de balises de cache. Si vous utilisez Lambda @Edge, le nom de l'en-tête n'a pas besoin de suivre le
x-amz-meta-<Key>format. -
Invalider par balise : utilisez l'
CreateInvalidationAPI avec le#préfixe pour invalider tous les objets mis en cache avec la balise spécifiée.aws cloudfront create-invalidation \ --distribution-iddistribution_ID\ --paths "#product:electronics"Cela invalide TOUS les objets mis en cache qui contiennent la balise
product:electronics, quel que soit leur chemin d'URL.
Exigences relatives au format des balises
Valeur de l'en-tête de réponse d'origine :
-
Les balises sont séparées par des virgules dans la valeur d'en-tête.
-
Les espaces de début et de fin autour de chaque étiquette sont rognés.
-
Les deux
tag1,tag2,tag3tag1, tag2, tag3sont valides et équivalents.
Valeurs des balises individuelles :
-
Caractères ASCII visibles (33—126)
-
Pas de caractères de contrôle, d'espaces ou de virgules
-
Insensible aux majuscules
-
256 caractères maximum par étiquette
-
50 balises maximum par objet (les balises supplémentaires sont ignorées)
Configuration d'une distribution pour les invalidations de balises
Pour activer les invalidations de balises, ajoutez un CacheTagConfig à votre configuration de distribution :
aws cloudfront create-distribution \ --distribution-config '{ "CallerReference": "my-distribution", "CacheTagConfig": { "HeaderName": "x-amz-meta-cache-tag" }, "DefaultCacheBehavior": { "TargetOriginId": "myOrigin", "ViewerProtocolPolicy": "redirect-to-https", "CachePolicyId": "658327ea-f89d-4fab-a63d-7e88639e58f6" }, "Origins": { ... }, "Enabled": true, "Comment": "Distribution with tag support" }'
Création d'invalidations de balises
Utilisez le # préfixe dans le --paths paramètre pour spécifier les balises :
# Invalidate all objects tagged with "user1" aws cloudfront create-invalidation \ --distribution-iddistribution_ID\ --paths "#user1" # Invalidate objects matching any of multiple tags (OR logic) aws cloudfront create-invalidation \ --distribution-iddistribution_ID\ --paths "#user1" "#product-category:electronics" # Mix path and tag invalidations in one batch aws cloudfront create-invalidation \ --distribution-iddistribution_ID\ --paths "/index.html" "#user1" "/images/*" "#product-category:electronics"
Vérification de l'état d'invalidation
GetInvalidationÀ utiliser pour vérifier le statut. La réponse inclut à la fois des éléments de chemin et de balise :
aws cloudfront get-invalidation \ --distribution-iddistribution_ID\ --idinvalidation_ID
Considérations importantes
-
Inscription requise : l'invalidation des balises ne fonctionne que sur les distributions configurées.
CacheTagConfigLes distributions dépourvues de cette configuration ignorent les en-têtes des balises de cache dès l'origine. -
Limites de traitement des balises : CloudFront traite jusqu'à 50 balises par objet mis en cache. Si une réponse d'origine contient plus de 50 balises, les balises supplémentaires au-delà de la limite ne sont pas stockées.
-
Modification du nom de l'en-tête : les invalidations de balises sont comparées à la configuration actuelle
CacheTagConfig. Si vous modifiez leHeaderNameinCacheTagConfig, les invalidations émises pour les objets mis en cache avec des balises sous l'ancien nom d'en-tête ne seront plus évaluées. Si vous devez modifier le nom de l'en-tête, commencez à renvoyer les nouveaux et anciens en-têtes de balises de cache avec vos objets, puis annulez le chemin (par exemple/*) ou invalidez les balises existantes avant de modifier le nom de l'en-tête afin d'éviter de diffuser du contenu obsolète. Une fois cela fait, vous pouvez arrêter d'envoyer l'ancien en-tête des balises de cache avec vos objets. -
Suppression CacheTagConfig : lorsque vous supprimez
CacheTagConfigd'une distribution, l'extraction des balises des réponses d'origine CloudFront s'arrête. Les objets mis en cache existants dotés de balises sont servis normalement jusqu'à leur expiration ou jusqu'à ce qu'ils soient invalidés par le chemin. -
Rétrocompatibilité : les invalidations de chemins et de caractères génériques existantes continuent de fonctionner sans modification. Les invalidations de balises sont additives : vous pouvez utiliser les deux méthodes sur la même distribution.
-
Locataires de distribution : l'invalidation des balises est également prise en charge pour les locataires de distribution via l'
CreateInvalidationForDistributionTenantAPI.
Exemples de cas d’utilisation
Exemple 1 : catalogue de produits de commerce électronique
Un site de commerce électronique étiquette les pages de produits mises en cache avec le produit, la catégorie et la marque :
x-amz-meta-cache-tag: category:electronics, brand:acme, product:12345
Lorsqu'ACME met à jour son image de marque, invalidez tous les produits ACME en même temps :
aws cloudfront create-invalidation \ --distribution-iddistribution_ID\ --paths "#brand:acme"
Exemple 2 : plateforme de contenu générée par les utilisateurs
Une plateforme étiquette le contenu mis en cache avec le nom d'utilisateur du propriétaire :
x-amz-meta-cache-tag: user:12345, content-type:image
Lorsqu'un utilisateur ferme son compte, invalidez tout son contenu une fois que vous l'avez supprimé de l'origine :
aws cloudfront create-invalidation \ --distribution-iddistribution_ID\ --paths "#user:12345"
Exemple 3 : gestion des versions du contenu
Un CMS balise le contenu avec des identifiants de version :
x-amz-meta-cache-tag: version:v2, template:homepage
Lors du déploiement d'une nouvelle version, invalidez tout le contenu de la version 2 :
aws cloudfront create-invalidation \ --distribution-iddistribution_ID\ --paths "#version:v2"