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.
Gérer la durée pendant laquelle le contenu reste dans le cache (expiration)
Vous pouvez contrôler la durée pendant laquelle vos fichiers restent dans le CloudFront cache avant de CloudFront transmettre une autre demande à votre source. Réduire la durée vous permet de servir des contenus dynamiques. 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 à partir d'un emplacement périphérique jusqu'à ce que la durée de cache que vous avez spécifiée soit atteinte, 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, 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 OK
et la dernière version du fichier.
Si un fichier situé dans un emplacement périphérique n'est pas fréquemment demandé, CloudFront vous pouvez l'expulser (supprimer le fichier avant sa date d'expiration) pour faire de la place aux fichiers demandés plus récemment.
Par défaut, chaque fichier expire automatiquement au bout de 24 heures, mais vous pouvez modifier le comportement par défaut de deux manières :
-
Pour modifier la durée du cache pour tous les fichiers qui correspondent au même schéma de chemin, vous pouvez modifier les CloudFront paramètres Minimum TTLTTL, Maximum et Default TTL pour un comportement de cache. Pour plus d'informations sur les paramètres individuels, voir Minimum TTLTTL, Maximum et Par défaut TTL dansRéférence des paramètres de distribution.
-
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-Control
avec la directivemax-age
ous-maxage
, ou un en-têteExpires
au fichier. Pour de plus amples informations, veuillez consulter Utiliser des en-têtes pour contrôler la durée du cache pour des objets individuels.
Pour plus d'informations sur la façon dont les TTL paramètres MinimumTTL, Default et Maximum TTL interagissent avec les s-maxage
directives max-age
and et le champ Expires
d'en-tête, consultezSpécifiez la durée de mise en CloudFront cache des objets.
Vous pouvez également contrôler la durée pendant laquelle les erreurs (par exemple404 Not Found
) restent dans un CloudFront cache avant de CloudFront réessayer d'obtenir l'objet demandé en transférant une autre demande à votre origine. Pour de plus amples informations, veuillez consulter Comment CloudFront traite les codes de statut HTTP 4xx et 5xx de votre origine.
Rubriques
Utiliser des en-têtes pour contrôler la durée du 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 paramètres Minimum TTLTTL, Default et Maximum affectent TTL également la durée du cache, mais voici un aperçu de la façon dont les en-têtes peuvent affecter la durée du cache :
-
La
Cache-Control max-age
directive vous permet de spécifier la durée (en secondes) pendant laquelle vous souhaitez qu'un objet reste dans le cache CloudFront avant de le récupérer 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=
seconds
Par exemple, la directive suivante indique CloudFront de conserver l'objet associé dans le cache pendant 3 600 secondes (une heure) :
Cache-Control: max-age=3600
Si vous souhaitez que les objets restent dans les caches CloudFront périphériques pendant une durée différente de celle dans les caches du navigateur, vous pouvez utiliser les
Cache-Control s-maxage
directivesCache-Control max-age
et conjointement. Pour de plus amples informations, veuillez consulter Spécifiez la durée de mise en CloudFront cache des objets. -
Le champ d'
Expires
en-tête vous permet de spécifier une date et une heure d'expiration en utilisant le format spécifié dans RFC2616, Hypertext Transfer Protocol -- HTTP /1.1 Section 3.3.1, Date complè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 à la fois pour Cache-Control max-age
et pourExpires
, CloudFront utilise uniquement la valeur deCache-Control max-age
.
Pour de plus amples informations, veuillez consulter Spécifiez la durée de mise en CloudFront cache des objets.
Vous ne pouvez pas utiliser les champs d'Pragma
en-tête HTTP Cache-Control
ou dans une GET
demande d'un visualiseur CloudFront pour forcer le retour de l'objet sur le serveur d'origine. CloudFront ignore ces champs d'en-tête dans les demandes des utilisateurs.
Pour plus d'informations sur les champs d'Expires
en-tête Cache-Control
et les champs d'en-tête, consultez les sections suivantes du document RFC2616, Hypertext Transfer Protocol -- /1.1 : HTTP
Servir du contenu périmé (expiré)
CloudFront prend en charge Stale-While-Revalidate
les directives de contrôle du Stale-If-Error
cache et.
-
La
stale-while-revalidate
directive permet CloudFront de diffuser du contenu périmé depuis le cache tout en récupérant de manière asynchrone une nouvelle version depuis l'origine. Cela améliore la latence, car les utilisateurs reçoivent des réponses immédiatement depuis CloudFront les emplacements périphériques sans avoir à attendre la récupération en arrière-plan, et le nouveau contenu est chargé en arrière-plan pour les demandes futures.Dans l'exemple suivant, met en CloudFront cache la réponse pendant une heure (
max-age=3600
). Si une demande est faite après cette période, CloudFront diffuse le contenu périmé tout en envoyant simultanément une demande à l'origine pour revalider et actualiser le contenu mis en cache. Le contenu obsolète est diffusé pendant 10 minutes au maximum (stale-while-revalidate=600
) pendant la revalidation du contenu.Cache-Control: max-age=3600, stale-while-revalidate=600
Note
CloudFront diffusera le contenu périmé jusqu'à la valeur de la
stale-while-revalidate
directive ou jusqu'à la valeur CloudFront maximaleTTL, la valeur la plus faible étant retenue. -
La
stale-if-error
directive permet CloudFront de diffuser du contenu périmé à partir du cache si l'origine est inaccessible ou renvoie un code d'erreur compris entre 500 et 600. Cela garantit que les utilisateurs peuvent accéder au contenu même en cas de panne de l'origine.Dans l'exemple suivant, met en CloudFront cache la réponse pendant une heure (
max-age=3600
). Si l'origine est en panne ou renvoie une erreur après cette période, le contenu périmé CloudFront continue à être diffusé pendant 24 heures au maximum (stale-if-error=86400
).Cache-Control: max-age=3600, stale-if-error=86400
Note
CloudFront diffusera le contenu périmé jusqu'à la valeur de la
stale-if-error
directive ou jusqu'à la valeur CloudFront maximaleTTL, la valeur la plus faible étant retenue.Lorsque des réponses d'erreur personnalisées
stale-if-error
et à la fois sont configurées, essayez d' CloudFront abord de diffuser le contenu périmé si une erreur est détectée dans le délai spécifiéstale-if-error
. Si le contenu périmé n'est pas disponible ou si lastale-if-error
durée du contenu est dépassée, CloudFront les réponses d'erreur personnalisées configurées pour le code d'état d'erreur correspondant sont envoyées.
- Utilisez les deux ensemble
-
stale-while-revalidate
etstale-if-error
sont des directives de contrôle du cache indépendantes qui peuvent être utilisées ensemble pour réduire la latence et ajouter une mémoire tampon permettant à votre origine de répondre ou de récupérer.Dans l'exemple suivant, met en CloudFront cache la réponse pendant une heure (
max-age=3600
). Si une demande est faite après cette période, CloudFront diffuse le contenu périmé 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, il CloudFront continue à diffuser le contenu périmé pendant 24 heures au maximum ()stale-if-error=86400
.Cache-Control: max-age=3600, stale-while-revalidate=600, stale-if-error=86400
Astuce
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 de mise en CloudFront cache des objets
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 TTL valeurs 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-Control
ouExpires
dans les réponses de l'origine. Ces en-têtes permettent également de déterminer la durée pendant laquelle un navigateur conserve un objet dans le cache du navigateur avant d'envoyer une autre demande à CloudFront.
Le tableau suivant explique comment les Expires
en-têtes Cache-Control
et envoyés depuis l'origine fonctionnent conjointement avec TTL les paramètres du comportement du cache pour affecter la mise en cache.
En-têtes d'origine | Minimum TTL = 0 | Minimum TTL > 0 |
---|---|---|
L'origine ajoute une directive |
CloudFront mise en cache CloudFront met en cache l'objet 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 CloudFront minimale TTL et maximale TTL et de la
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 CloudFront par défautTTL. 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 la valeur CloudFront minimale TTL ou la valeur par défautTTL. Conservation en cache par les navigateurs Dépend du navigateur. |
L'origine ajoute les directives |
CloudFront mise en cache CloudFront met en cache l'objet 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 CloudFront minimale TTL et maximale TTL et de la
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 en cache l'objet 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 CloudFront minimale TTL et maximale TTL et de l'
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 |
L'origine ajoute les directives |
CloudFront et les navigateurs respectent les en-têtes. |
CloudFront mise en cache CloudFront met en cache l'objet pour la valeur CloudFront minimaleTTL. Voir l'avertissement en dessous de ce tableau. Conservation en cache par les navigateurs Les navigateurs respectent les en-têtes. |
Avertissement
Si votre minimum TTL est supérieur à 0, CloudFront utilise le minimum de la politique de cacheTTL, même si les private
directives Cache-Control: no-cache
no-store
, et/ou 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 visualiseur.
Si l'origine est inaccessible et que la TTL valeur minimale ou maximale est supérieure à 0, CloudFront servira l'objet obtenu précédemment par l'origine.
Pour éviter ce comportement, incluez la directive Cache-Control:
stale-if-error=0
avec l'objet renvoyé de l'origine. Cela CloudFront entraîne le renvoi d'une erreur en réponse aux futures demandes si l'origine est inaccessible, plutôt que de renvoyer l'objet obtenu précédemment.
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 du CloudFront API, consultez UpdateDistribution.
Ajoutez des en-têtes à vos objets à l'aide de la console Amazon S3
Pour ajouter un champ d'en-tête Cache-Control
ou Expires
aux objets Amazon S3 à l'aide de la console Amazon S3
Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/s3/
. -
Dans la liste des compartiments, sélectionnez le nom du compartiment contenant les fichiers auxquels vous ajoutez des en-têtes.
-
Sélectionnez la case à cocher située à côté du nom du fichier ou du dossier auquel vous ajoutez des en-têtes. L'ajout d'en-têtes sur un dossier impacte tous les fichiers contenus dans ce dossier.
-
Sélectionnez Actions, puis Edit metadata (Modifier les métadonnées).
-
Dans le panneau Add metadata (Ajouter des métadonnées), procédez comme suit :
-
Sélectionnez Add metadata (Ajouter des métadonnées).
-
DansType, choisissez System defined (Défini par le système).
-
Dans Key (Clé), choisissez le nom de l'en-tête que vous ajoutez (Cache-Control ou Expires).
-
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
.
-
-
Au bas de la page, sélectionnez Edit metadata (Modifier les métadonnées).