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.
Gestion de la durée de conservation de contenu dans le cache (expiration)
Vous pouvez contrôler la durée pendant laquelle vos fichiers restent en CloudFront cache avant de CloudFront transmettre une autre demande à votre source. En réduisant la durée, vous pouvez diffuser du contenu dynamique. Augmenter la durée signifie que vos utilisateurs obtiennent de meilleures performances parce que vos fichiers sont plus susceptibles d'être servis directement à partir du cache périphérique. Une durée plus longue réduit également la charge sur votre origine.
Généralement, CloudFront diffuse un fichier depuis un emplacement périphérique jusqu'à ce que la durée de cache que vous avez spécifiée soit écoulée, c'est-à-dire jusqu'à ce que le fichier expire. Après son expiration, la prochaine fois que l'emplacement périphérique reçoit une demande pour le fichier, il CloudFront transmet la demande à l'origine pour vérifier que le cache contient la dernière version du fichier. La réponse de l'origine varie selon que le fichier a changé ou non :
-
Si le CloudFront cache possède déjà la dernière version, l'origine renvoie un code d'état
304 Not Modified. -
Si le CloudFront cache ne possède pas la dernière version, l'origine renvoie un code d'état
200 OKet la dernière version du fichier.
Si un fichier situé dans un emplacement périphérique n'est pas fréquemment demandé, vous CloudFront pouvez l'expulser (supprimer le fichier avant sa date d'expiration) pour faire de la place pour les fichiers qui ont été demandés plus récemment.
Nous vous recommandons de gérer la durée de votre cache en mettant à jour la politique de cache de votre distribution. Si vous choisissez de ne pas utiliser de politique de cache, la durée de vie par défaut est de 24 heures, mais vous pouvez mettre à jour les paramètres suivants pour remplacer cette valeur par défaut :
-
Pour modifier la durée du cache pour tous les fichiers qui correspondent au même modèle de chemin, vous pouvez modifier CloudFront les paramètres du TTL minimum, du TTL maximum et du TTL par défaut pour le comportement du cache. Pour en savoir plus sur les paramètres individuels, consultez Durée de vie minimale, Durée de vie (TTL) maximale et TTL par défaut.
-
Pour changer la durée de conservation en cache pour un fichier individuel, vous pouvez configurer votre origine de sorte à ajouter un en-tête
Cache-Controlavec la directivemax-ageous-maxage, ou un en-têteExpiresau fichier. Pour plus d’informations, consultez Utilisation des en-têtes pour contrôler la durée de conservation en cache pour des objets individuels.
Pour plus d’informations sur la manière dont la durée de vie minimale, la durée de vie par défaut et la durée de vie maximale interagissent avec les directives max-age et s-maxage, ainsi que le champ d’en-tête Expires, consultez Spécifiez la durée pendant laquelle les objets sont CloudFront mis en cache.
Vous pouvez également contrôler la durée pendant laquelle les erreurs (par exemple404 Not Found) restent dans le CloudFront cache avant de CloudFront réessayer d'obtenir l'objet demandé en transférant une autre demande vers votre origine. Pour plus d’informations, consultez Comment CloudFront traite les codes d'état HTTP 4xx et 5xx depuis votre origine.
Rubriques
Utilisation des en-têtes pour contrôler la durée de conservation en cache pour des objets individuels
Vous pouvez utiliser les en-têtes Cache-Control et Expires pour contrôler pendant combien de temps des objets restent dans le cache. Les valeurs de Durée de vie minimale, Durée de vie par défaut et Durée de vie maximale affectent également la durée de conservation en cache, mais voici un aperçu de l'incidence de ces en-têtes sur cette durée :
-
Grâce à
Cache-Control max-agecette directive, vous pouvez spécifier la durée (en secondes) pendant laquelle vous souhaitez qu'un objet reste dans le cache avant de CloudFront le récupérer à nouveau depuis le serveur d'origine. Le délai d'expiration minimum pris CloudFront en charge est de 0 seconde. La valeur maximale est 100 ans. Spécifiez la valeur au format suivant :Cache-Control: max-age=secondsPar exemple, la directive suivante indique CloudFront de conserver l'objet associé dans le cache pendant 3 600 secondes (une heure) :
Cache-Control: max-age=3600Si vous souhaitez que les objets restent dans CloudFront les caches périphériques pendant une durée différente de celle dans les caches du navigateur, vous pouvez utiliser les
Cache-Control s-maxagedirectivesCache-Control max-ageet conjointement. Pour plus d’informations, consultez Spécifiez la durée pendant laquelle les objets sont CloudFront mis en cache. -
Le champ d'
Expiresen-tête vous permet de spécifier une date et une heure d'expiration en utilisant le format spécifié dans la RFC 2616, Protocole de transfert hypertexte -- HTTP/1.1 Section 3.3.1, Datecomplète, par exemple : Sat, 27 Jun 2015 23:59:59 GMT
Nous vous recommandons d'utiliser la directive Cache-Control max-age plutôt que le champ d'en-tête Expires pour contrôler la mise en cache des objets. Si vous spécifiez des valeurs pour Cache-Control max-age et pour Expires, CloudFront utilise uniquement la valeur de Cache-Control max-age.
Pour plus d’informations, consultez Spécifiez la durée pendant laquelle les objets sont CloudFront mis en cache.
Vous ne pouvez pas utiliser les champs HTTP Cache-Control ou d'Pragmaen-tête dans une GET requête émanant d'un utilisateur CloudFront pour forcer le retour au serveur d'origine de l'objet. CloudFront ignore ces champs d'en-tête dans les requêtes des spectateurs.
Pour plus d'informations sur les champs Expires d'en-tête Cache-Control et, consultez les sections suivantes de la RFC 2616, Hypertext Transfer Protocol -- : HTTP/1.1
Diffusion de contenu obsolète (expiré)
CloudFront prend en charge Stale-While-Revalidate les directives de contrôle du Stale-If-Error cache et. Vous pouvez utiliser ces directives pour définir la durée pendant laquelle le contenu obsolète reste accessible aux utilisateurs.
Stale-While-Revalidate
Cette directive permet CloudFront de diffuser du contenu obsolète depuis le cache tout en récupérant de CloudFront manière asynchrone une nouvelle version depuis l'origine. Cela permet d’améliorer la latence, car les utilisateurs reçoivent immédiatement les réponses depuis les emplacements périphériques sans devoir attendre la récupération en arrière-plan. Le nouveau contenu est chargé en arrière-plan pour les prochaines demandes.
Exemple Exemple : Stale-While-Revalidate
CloudFront effectue les opérations suivantes lorsque vous définissez l'Cache-Controlen-tête pour utiliser ces directives.
Cache-Control: max-age=3600, stale-while-revalidate=600
-
CloudFront mettra en cache une réponse pendant une heure (
max-age=3600). -
Si une demande est faite après cette durée, CloudFront sert le contenu obsolète, tout en envoyant simultanément une demande à l'origine pour revalider et actualiser le contenu mis en cache.
-
Pendant la revalidation du contenu, CloudFront diffuse le contenu obsolète pendant 10 minutes ()
stale-while-revalidate=600.
Note
CloudFront diffusera le contenu obsolète jusqu'à la valeur de la stale-while-revalidate directive ou à la valeur du TTL CloudFront maximum, la valeur la plus faible étant retenue. Une fois la durée de vie maximale écoulée, l’objet obsolète n’est plus disponible dans le cache périphérique, quelle que soit sa valeur stale-while-revalidate.
Stale-If-Error
Cette directive permet CloudFront de diffuser du contenu obsolète depuis le cache si l'origine est inaccessible ou renvoie un code d'erreur compris entre 500 et 600. Cela garantit que les spectateurs peuvent accéder au contenu même pendant une panne d'origine.
Exemple Exemple : Stale-If-Error
CloudFront effectue les opérations suivantes lorsque vous définissez l'Cache-Controlen-tête pour utiliser ces directives.
Cache-Control: max-age=3600, stale-if-error=86400
-
CloudFront met la réponse en cache pendant une heure (
max-age=3600). -
Si l'origine est en panne ou renvoie une erreur après cette durée, CloudFront continue de diffuser le contenu obsolète pendant 24 heures maximum ()
stale-if-error=86400 -
Si vous avez configuré des réponses d'erreur personnalisées, CloudFront tentera de diffuser le contenu obsolète si une erreur est détectée pendant la
stale-if-errordurée spécifiée. Si le contenu obsolète n'est pas disponible, les réponses d'erreur personnalisées que vous avez configurées pour le code d'état d'erreur correspondant CloudFront seront alors diffusées. Pour plus d’informations, consultez Génération de réponses aux·erreurs personnalisées.
Remarques
-
CloudFront diffusera le contenu obsolète jusqu'à la valeur de la
stale-if-errordirective ou à la valeur du TTL CloudFront maximum, la valeur la plus faible étant retenue. Une fois la durée de vie maximale écoulée, l’objet obsolète n’est plus disponible dans le cache périphérique, quelle que soit sa valeurstale-if-error. -
Si vous ne configurez pas
stale-if-errorou ne personnalisez pas les réponses aux erreurs, vous CloudFront renverrez l'objet obsolète ou la transmettrez au visualiseur, selon que l'objet demandé se trouve ou non dans le cache périphérique. Pour plus d’informations, consultez Comment traiter CloudFront les erreurs si vous n'avez pas configuré de pages d'erreur personnalisées.
Utilisation des deux directives
stale-while-revalidate et stale-if-error sont des directives de contrôle du cache indépendantes que vous pouvez utiliser ensemble pour réduire la latence et ajouter une mémoire tampon permettant à votre origine de répondre ou de récupérer.
Exemple Exemple : utilisation des deux directives
CloudFront effectue les opérations suivantes lorsque vous définissez l'Cache-Controlen-tête pour utiliser les directives suivantes.
Cache-Control: max-age=3600, stale-while-revalidate=600, stale-if-error=86400
-
CloudFront met la réponse en cache pendant une heure (
max-age=3600). -
Si une demande est faite après cette durée, CloudFront diffuse le contenu obsolète pendant 10 minutes maximum (
stale-while-revalidate=600) pendant la revalidation du contenu. -
Si le serveur d'origine renvoie une erreur alors qu'il CloudFront tente de revalider le contenu, CloudFront il continuera à diffuser le contenu obsolète pendant 24 heures au maximum ()
stale-if-error=86400.
La mise en cache est un équilibre entre performance et actualisation. L'utilisation de directives telles que stale-while-revalidate et stale-if-error peut améliorer les performances et l'expérience utilisateur, mais vérifiez que les configurations correspondent à l'actualisation souhaitée pour votre contenu. Les directives de contenu obsolètes conviennent mieux aux cas d'utilisation où le contenu doit être actualisé, mais où il n'est pas essentiel de disposer de la dernière version. De plus, si votre contenu ne change pas ou change rarement, stale-while-revalidate peut ajouter des demandes réseau inutiles. Envisagez plutôt de définir une durée de cache longue.
Spécifiez la durée pendant laquelle les objets sont CloudFront mis en cache
Pour contrôler la durée pendant laquelle un objet CloudFront est conservé dans le cache avant d'envoyer une autre demande à l'origine, vous pouvez :
-
Définissez les valeurs TTL minimale, maximale et par défaut dans le comportement du cache d'une CloudFront distribution. Vous pouvez définir ces valeurs dans une politique de cache associée au comportement de cache (recommandé) ou dans les paramètres de cache hérités.
-
inclure l'en-tête
Cache-ControlouExpiresdans les réponses de l'origine. Ces en-têtes permettent également de déterminer combien de temps un navigateur conserve un objet dans le cache du navigateur avant d'envoyer une autre demande à CloudFront.
Le tableau suivant explique comment les en-têtes Cache-Control et Expires envoyés à partir de l'origine fonctionnent avec les paramètres TTL dans un comportement de cache pour affecter la mise en cache.
| En-têtes d'origine | Durée de vie minimale = 0 | Durée de vie minimale > 0 |
|---|---|---|
|
L'origine ajoute une directive |
CloudFront mise en cache CloudFront met l'objet en cache pour la valeur la plus faible entre la valeur de la Conservation en cache par les navigateurs Les navigateurs mettent l'objet en cache selon la valeur de la directive |
CloudFront mise en cache CloudFront la mise en cache dépend des valeurs du TTL CloudFront minimum et du TTL maximum et de la directive :
Conservation en cache par les navigateurs Les navigateurs mettent l'objet en cache selon la valeur de la directive |
|
L'origine n'ajoute pas de directive |
CloudFront mise en cache CloudFront met en cache l'objet pour la valeur du TTL CloudFront par défaut. Conservation en cache par les navigateurs Dépend du navigateur. |
CloudFront mise en cache CloudFront met en cache l'objet pour la valeur la plus élevée entre le TTL CloudFront minimum ou le TTL par défaut. Conservation en cache par les navigateurs Dépend du navigateur. |
|
L'origine ajoute les directives |
CloudFront mise en cache CloudFront met l'objet en cache pour la valeur la plus faible entre la valeur de la Conservation en cache par les navigateurs Les navigateurs mettent l'objet en cache selon la valeur de la directive |
CloudFront mise en cache CloudFront la mise en cache dépend des valeurs du TTL CloudFront minimum et du TTL maximum et de la directive :
Conservation en cache par les navigateurs Les navigateurs mettent l'objet en cache selon la valeur de la directive |
|
L'origine ajoute un en-tête |
CloudFront mise en cache CloudFront met l'objet en cache jusqu'à la date indiquée dans l' Conservation en cache par les navigateurs Les navigateurs mettent l'objet en cache jusqu'à la date indiquée dans l'en-tête |
CloudFront mise en cache CloudFront la mise en cache dépend des valeurs du TTL CloudFront minimum et du TTL maximum et de l'en-tête :
Conservation en cache par les navigateurs Les navigateurs mettent l'objet en cache jusqu'à la date et l'heure indiquées dans l'en-tête |
|
Origin ajoute |
CloudFront et les navigateurs respectent les en-têtes. |
CloudFront mise en cache CloudFront met en cache l'objet pour la valeur du TTL CloudFront minimum. Voir l'avertissement en dessous de ce tableau. Conservation en cache par les navigateurs Les navigateurs respectent les en-têtes. |
Avertissement
-
Si votre TTL minimum est supérieur à 0, CloudFront utilise le TTL minimum de la politique de cache, même si les and/or
privatedirectivesCache-Control: no-cacheno-store, sont présentes dans les en-têtes d'origine.-
Si l'origine est accessible, CloudFront récupère l'objet depuis l'origine et le renvoie au spectateur.
-
Si l'origine est inaccessible et que la valeur TTL minimale ou maximale est supérieure à 0, CloudFront servira l'objet qu'il a obtenu de l'origine précédemment.
Pour éviter ce comportement, incluez la directive
Cache-Control: stale-if-error=0avec l'objet renvoyé de l'origine. Cela CloudFront entraîne le renvoi d'une erreur en réponse aux demandes futures si l'origine est inaccessible, au lieu de renvoyer l'objet qu'il a obtenu de l'origine précédemment. -
-
CloudFront ne met pas en cache le code d'état HTTP 501 (non implémenté) provenant d'une origine S3 lorsque les en-têtes d'origine incluent les and/or
privatedirectivesCache-Control: no-cache,no-store,. Il s’agit du comportement par défaut pour une origine S3, même si votre paramètre Durée de vie minimale est supérieur à 0.
Pour plus d'informations sur la façon de modifier les paramètres des distributions à l'aide de la CloudFront console, consultezMettre à jour une distribution. Pour plus d'informations sur la façon de modifier les paramètres des distributions à l'aide de l' CloudFront API, consultez UpdateDistribution.
Ajout d’en-têtes à vos objets à l’aide de la console Amazon S3
Vous pouvez ajouter le champ d’en-tête Cache-Control ou Expires à vos objets Amazon S3. Pour ce faire, vous devez modifier les champs de métadonnées de l’objet.
Pour ajouter un champ d'en-tête Cache-Control ou Expires aux objets Amazon S3
Cache-Control ou-
Suivez la procédure décrite dans la section Remplacement de métadonnées définies par le système de la rubrique Modification des métadonnées d’objet dans la console Amazon S3 du Guide de l’utilisateur Amazon S3.
-
Pour Key, choisissez le nom de l'en-tête que vous êtes en train d'ajouter (Cache-Controlou qui expire).
-
Dans Value (Valeur), entrez une valeur d'en-tête. Par exemple, pour une en-tête
Cache-Control, vous pouvez entrermax-age=86400. PourExpires, vous pouvez entrer une date et une heure d'expiration commeWed, 30 Jun 2021 09:28:00 GMT. -
Suivez le reste de la procédure pour enregistrer les modifications apportées aux métadonnées.