Gestion de la durée de conservation de contenu dans le cache périphérique (expiration) - Amazon CloudFront

Gestion de la durée de conservation de contenu dans le cache périphérique (expiration)

Vous pouvez contrôler pendant combien de temps des fichiers restent dans le cache CloudFront avant que CloudFront réachemine une autre requête vers votre origine. 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 sert un fichier à partir d'un emplacement périphérique jusqu'à ce que la durée de conservation en 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 d'utilisateur pour l'objet, CloudFront transmet la demande au serveur d'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 cache CloudFront contient déjà la dernière version, l'origine renvoie un code de statut 304 Not Modified.

  • Si le cache CloudFront ne contient pas la dernière version, l'origine renvoie un code de statut 200 OK et la dernière version du fichier.

Si un fichier dans un emplacement périphérique n'est pas souvent demandé, CloudFront pourrait expulser le fichier, c'est-à-dire l'enlever avant sa date d'expiration, pour faire de la place pour des fichiers qui ont été 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 plus d'informations sur la façon dont Durée de vie minimale, Durée de vie par défaut et Durée de vie maximale interagissent avec les directives Cache-Control max-age et Cache-Control s-maxage, et le champ d'en-tête Expires, consultez Spécifier le délai pendant lequel CloudFront garde des objets en cache pour des distributions Web.

Vous pouvez également contrôler pendant combien de temps des erreurs (par exemple, 404, Not Found) restent dans le cache CloudFront avant que ce dernier tente à nouveau d'obtenir l'objet demandé en transmettant une autre demande à votre origine. Pour de plus amples informations, veuillez consulter Traitement et mise en cache des codes de statut HTTP 4xx et 5xx provenant de votre origine par CloudFront.

Utiliser 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 :

  • La directive Cache-Control max-age vous permet de spécifier combien de temps (en secondes) vous souhaitez qu'un objet reste dans le cache avant que CloudFront extraie à nouveau l'objet du serveur d'origine. Le délai d'expiration minimum pris en charge par CloudFront est de 0 seconde pour des distributions Web et de 3600 secondes pour des distributions RTMP. La valeur maximale est 100 ans. Spécifiez la valeur au format suivant :

    Cache-Control: max-age=secondes

    Par exemple, la directive suivante demande à CloudFront de conserver l'objet associé dans le cache pendant 3600 secondes (une heure) :

    Cache-Control: max-age=3600

    Si vous souhaitez que des objets restent dans des caches périphériques CloudFront pendant une durée différente de celle dans les caches de navigateur, vous pouvez utiliser les directives Cache-Control max-age et Cache-Control s-maxage ensemble. Pour plus d'informations, consultez Spécifier le délai pendant lequel CloudFront garde des objets en cache pour des distributions Web.

  • 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 plus d'informations, consultez Spécifier le délai pendant lequel CloudFront garde des objets en cache pour des distributions Web.

Vous ne pouvez pas utiliser les champs d'en-tête HTTP Cache-Control ou Pragma dans une requête GET d'un utilisateur pour forcer CloudFront à revenir au serveur d'origine pour l'objet. CloudFront ignore ces champs d'en-tête dans des requêtes d'utilisateur.

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:

Pour un exemple de la façon d'ajouter les champs d'en-tête Cache-Control et Expires à l'aide du kit AWS SDK pour PHP, consultez Chargement d'un objet grâce au kit AWS SDK pour PHP dans le Amazon Simple Storage Service Manuel du développeur. Certains outils tiers peuvent également ajouter ces champs.

Spécifier le délai pendant lequel CloudFront garde des objets en cache pour des distributions Web

Pour des distributions web, vous pouvez utiliser les en-têtes Cache-Control ou Expires, ainsi que les valeurs de durée de vie (TTL) minimale, maximale et par défaut de CloudFront pour contrôler la durée en secondes pendant laquelle CloudFront conserve un objet dans le cache avant de réacheminer une autre requête à l'origine. Des valeurs d'en-tête déterminent également combien de temps un navigateur conserve un objet dans le cache avant de transmettre une autre demande à CloudFront.

Important

Si vous configurez CloudFront pour réacheminer tous les en-têtes à votre origine pour un comportement de cache, CloudFront ne met jamais en cache les objets associés. En revanche, CloudFront transmet toutes les demandes pour ces objets à votre origine. Dans cette configuration, la valeur de durée de vie minimale doit être 0. Pour plus d'informations, consultez Mise en cache de contenu basée sur des en-têtes de requêtes.

Pour spécifier des valeurs pour Durée de vie minimale, Durée de vie maximale et Durée de vie par défaut, vous devez sélectionner l'option Personnaliser pour le paramètre Mise en cache d'un objet.

Configuration de l'origine Minimum TTL = 0 Seconds Minimum TTL > 0 Seconds

L'origine ajoute une directive Cache-Control max-age aux objets

CloudFront mise en cache

CloudFront garde en cache les objets selon la valeur la plus faible entre la directive Cache-Control max-age et la valeur de durée de vie maximale CloudFront.

Conservation en cache par les navigateurs

Les navigateurs gardent en cache les objets selon la valeur de la directive Cache-Control max-age.

CloudFront mise en cache

La mise en cache de CloudFront dépend des valeurs de durée de vie (TTL) minimale et maximale CloudFront et de la directive Cache-Control max-age :

  • Durée de vie minimale < max-age < durée de vie maximale

    CloudFront garde en cache les objets selon la valeur de la directive Cache-Control max-age.

  • max-age < durée de vie minimale

    CloudFront garde en cache les objets selon la valeur de la durée de vie minimale CloudFront.

  • max-age > durée de vie maximale

    CloudFront garde en cache les objets selon la valeur de la durée de vie maximale CloudFront.

Conservation en cache par les navigateurs

Les navigateurs gardent en cache les objets selon la valeur de la directive Cache-Control max-age.

L'origine n'ajoute pas une directive Cache-Control max-age aux objets

CloudFront mise en cache

CloudFront garde en cache les objets selon la valeur de la durée de vie par défaut CloudFront.

Conservation en cache par les navigateurs

Dépend du navigateur.

CloudFront mise en cache

CloudFront garde en cache les objets selon la valeur la plus élevée entre les valeurs de durée de vie minimale ou par défaut CloudFront.

Conservation en cache par les navigateurs

Dépend du navigateur.

L'origine ajoute les directives Cache-Control max-age et Cache-Control s-maxage aux objets

CloudFront mise en cache

CloudFront garde en cache les objets selon la valeur la plus faible entre la directive Cache-Control s-maxage et la valeur de durée de vie maximale CloudFront.

Conservation en cache par les navigateurs

Les navigateurs gardent en cache les objets selon la valeur de la directive Cache-Control max-age.

CloudFront mise en cache

La mise en cache de CloudFront dépend des valeurs de durée de vie (TTL) minimale et maximale CloudFront et de la directive Cache-Control s-maxage :

  • Durée de vie minimale < s-maxage < durée de vie maximale

    CloudFront garde en cache les objets selon la valeur de la directive Cache-Control s-maxage.

  • s-maxage < durée de vie minimale

    CloudFront garde en cache les objets selon la valeur de la durée de vie minimale CloudFront.

  • s-maxage > durée de vie maximale

    CloudFront garde en cache les objets selon la valeur de la durée de vie maximale CloudFront.

Conservation en cache par les navigateurs

Les navigateurs gardent en cache les objets selon la valeur de la directive Cache-Control max-age.

L'origine ajoute un en-tête Expires aux objets

CloudFront mise en cache

CloudFront garde en cache les objets jusqu'à la date de l'en-tête Expires ou selon la valeur de durée de vie maximale CloudFront, selon la première de ces éventualités.

Conservation en cache par les navigateurs

Les navigateurs gardent en cache les objets jusqu'à la date de l'en-tête Expires.

CloudFront mise en cache

La mise en cache de CloudFront dépend des valeurs de durée de vie (TTL) minimale et maximale CloudFront, et de l'en-tête Expires :

  • Durée de vie minimale < Expires < durée de vie maximale

    CloudFront garde en cache les objets jusqu'à la date et l'heure de l'en-tête Expires.

  • Expires < durée de vie minimale

    CloudFront garde en cache les objets selon la valeur de la durée de vie minimale CloudFront.

  • Expires > durée de vie maximale

    CloudFront garde en cache les objets selon la valeur de la durée de vie maximale CloudFront.

Conservation en cache par les navigateurs

Les navigateurs gardent en cache les objets jusqu'à la date et l'heure de l'en-tête Expires.

L'origine ajoute les directives Cache-Control: no-cache, no-store et/ou private aux objets

CloudFront et les navigateurs respectent les en-têtes.

Pour une exception sur la façon dont CloudFront traite l'en-tête Cache-Control: no-cache, consultez Demandes simultanées pour le même objet (pics de trafic).

CloudFront mise en cache

CloudFront garde en cache les objets selon la valeur de la durée de vie minimale CloudFront.

Conservation en cache par les navigateurs

Les navigateurs respectent les en-têtes.

Pour plus d'informations sur la façon de changer les paramètres pour les distributions web à l'aide de la console CloudFront, consultez Mise à jour d'une distribution. Pour plus d'informations sur la façon de changer les paramètres pour les distributions web à l'aide de l'API CloudFront, consultez PUT Config.

Spécifier le délai minimal pendant lequel CloudFront garde des objets en cache pour les distributions RTMP

Pour les distributions RTMP, CloudFront garde les objets dans les caches périphériques pendant 24 heures par défaut. Vous pouvez ajouter l'en-tête Cache-Control ou Expires à vos objets pour changer la durée pendant laquelle CloudFront garde les objets dans les caches périphériques avant de réacheminer une autre requête à l'origine. La durée minimale est de 3600 secondes (une heure). Si vous spécifiez une valeur plus faible, CloudFront utilise 3600 secondes.

Ajouter des en-têtes à vos objets à l'aide de la console Amazon S3

Note

Sur la console Amazon S3, vous ne pouvez ajouter des en-têtes qu'à un seul objet à la fois, mais avec certains outils tiers, vous pouvez ajouter des en-têtes à plusieurs objets Amazon S3 simultanément. Pour plus d'informations sur les outils tiers prenant en charge Amazon S3, recherchez AWS S3 third party tools sur le web.

Pour ajouter un champ d'en-tête Cache-Control ou Expires à des objets Amazon S3 à l'aide de la console Amazon S3

  1. Connectez-vous à AWS Management Console et ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3.

  2. Sur la console Amazon S3, dans la liste Nom du compartiment, choisissez le nom du compartiment qui contient les fichiers.

  3. Dans la liste Nom, choisissez le nom de l'objet auquel vous voulez ajouter un en-tête.

  4. Choisissez Propriétés, puis Métadonnées.

  5. Choisissez Ajouter des métadonnées, puis dans le menu Clé, choisissez Cache-Control ou Expiration.

  6. Dans le champ Valeur, saisissez l'un des éléments suivants :

    • Dans le champ Cache-Control, tapez :

      max-age=number of seconds that you want objects to stay in a CloudFront edge cache

    • Dans le champ Expiration, tapez une date et une heure au format HTML.

  7. Choisissez Save.