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.
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, le TTL (Time to Live) par défaut est de 24 heures, mais vous pouvez mettre à jour les paramètres suivants pour remplacer la valeur par défaut :
-
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 TTL minimum, TTL maximum et TTL par défaut pour un comportement de cache. Pour plus d'informations sur les différents paramètres, consultez Durée de vie minimale, Durée de vie maximale et Durée de vie par défaut dans Ré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 de plus amples 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
, veuillez consulter Spécifiez la durée pendant laquelle les objets sont mis en CloudFront cache.
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 d'état 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 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 :
-
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 pendant laquelle les objets sont mis en CloudFront cache. -
Le champ d'en-tête
Expires
vous permet de spécifier une date et une heure d'expiration au format spécifié dans RFC 2616, Hypertext Transfer Protocol -- HTTP/1.1 Section 3.3.1, Full Date, 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 de plus amples informations, veuillez consulter Spécifiez la durée pendant laquelle les objets sont mis en CloudFront cache.
Vous ne pouvez pas utiliser les champs HTTP Cache-Control
ou d'Pragma
en-tête 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'en-tête Cache-Control
et Expires
, consultez les sections suivantes de RFC 2616, Hypertext Transfer Protocol -- HTTP/1.1:
Servir du contenu périmé (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 périmé est disponible pour les spectateurs.
Stale-While-Revalidate
Cette directive permet CloudFront de diffuser du contenu périmé depuis le cache tout en récupérant de CloudFront manière asynchrone une nouvelle version depuis l'origine. Cela améliore la latence, car les spectateurs reçoivent des réponses immédiatement depuis les emplacements périphériques, sans avoir à attendre l'extraction en arrière-plan. Le nouveau contenu est chargé en arrière-plan pour les demandes futures.
Exemple : Stale-While-Revalidate
CloudFront effectue les opérations suivantes lorsque vous définissez l'Cache-Control
en-tête pour qu'il utilise 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 diffuse le contenu périmé, 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 périmé pendant 10 minutes maximum ()
stale-while-revalidate=600
.
Note
CloudFront diffusera le contenu périmé jusqu'à la valeur de la stale-while-revalidate
directive ou à la valeur du TTL CloudFront maximal, la valeur la plus faible étant retenue. Après la durée TTL maximale, l'objet périmé ne sera 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 périmé depuis le 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.
Exemple : Stale-If-Error
CloudFront effectue les opérations suivantes lorsque vous définissez l'Cache-Control
en-tête pour qu'il utilise ces directives.
Cache-Control: max-age=3600, stale-if-error=86400
-
CloudFront met en cache la réponse pendant une heure (
max-age=3600
). -
Si l'origine est en panne ou renvoie une erreur après cette durée, CloudFront continue à diffuser le contenu périmé pendant 24 heures au maximum ()
stale-if-error=86400
-
Si vous avez configuré des réponses d'erreur personnalisées, CloudFront tentera de diffuser le contenu périmé si une erreur se produit dans le délai spécifié
stale-if-error
. Si le contenu périmé n'est pas disponible, il CloudFront diffusera les réponses d'erreur personnalisées que vous avez configurées pour le code d'état d'erreur correspondant. Pour de plus amples informations, veuillez consulter Générez des réponses d'erreur personnalisées.
Remarques
-
CloudFront diffusera le contenu périmé jusqu'à la valeur de la
stale-if-error
directive ou à la valeur du TTL CloudFront maximal, la valeur la plus faible étant retenue. Après la durée TTL maximale, l'objet périmé ne sera plus disponible dans le cache périphérique, quelle que soit sa valeur.stale-if-error
-
Si vous ne configurez pas
stale-if-error
ou ne personnalisez pas les réponses d'erreur, vous CloudFront renverrez l'objet périmé ou redirigerez la réponse d'erreur au visualiseur, selon que l'objet demandé se trouve dans le cache périphérique ou non. Pour de plus amples informations, veuillez consulter Comment CloudFront traite les erreurs si vous n'avez pas configuré de pages d'erreur personnalisées.
Utilisez les deux directives
Il s'agit dans stale-while-revalidate
stale-if-error
les deux cas de directives de contrôle de cache indépendantes que vous pouvez utiliser conjointement pour réduire la latence et pour ajouter une mémoire tampon permettant à votre origine de répondre ou de récupérer.
Exemple : utilisation des deux directives
CloudFront effectue les opérations suivantes lorsque vous configurez l'Cache-Control
en-tête pour qu'il utilise les directives suivantes.
Cache-Control: max-age=3600, stale-while-revalidate=600, stale-if-error=86400
-
CloudFront met en cache la réponse pendant une heure (
max-age=3600
). -
Si une demande est faite après cette durée, 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, CloudFront il continuera à diffuser le contenu périmé 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 mis en CloudFront 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-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 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 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 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 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 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 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 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 |
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 TTL CloudFront minimale. 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 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 valeur TTL 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 de l' CloudFront API, consultez UpdateDistribution.
Ajoutez des en-têtes à vos objets à l'aide de la console Amazon S3
Vous pouvez ajouter le champ Expires
d'en-tête Cache-Control
ou à vos objets Amazon S3. Pour ce faire, vous devez modifier les champs de métadonnées de l'objet.
Pour ajouter un champ Cache-Control
ou un champ d'Expires
en-tête aux objets Amazon S3
-
Suivez la procédure décrite dans la section Remplacer les 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.
-
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
. -
Suivez le reste de la procédure pour enregistrer les modifications apportées aux métadonnées.