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 de réacheminer une autre demande 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 diffuse 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 se 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 recevra une demande d'utilisateur pour l'objet, CloudFront transmettra 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 d'état 304 Not Modified.

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

Si un fichier à un emplacement périphérique n'est pas souvent demandé, CloudFront pourrait l'expulser, c'est-à-dire l'enlever avant sa date d'expiration, afin de libérer 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 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 Cache-Control max-age et Cache-Control s-maxage, ainsi que le champ d'en-tête Expires, veuillez consulter Spécification du délai pendant lequel CloudFront garde les objets en cache pour les 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.

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 :

  • 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 les distributions web et de 3 600 secondes pour les 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 3 600 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 définie dans les caches de navigateur, vous pouvez utiliser les directives Cache-Control max-age et Cache-Control s-maxage ensemble. Pour de plus amples informations, veuillez consulter Spécification du délai pendant lequel CloudFront garde les objets en cache pour les 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écification du délai pendant lequel CloudFront garde les objets en cache pour les distributions web.

Vous ne pouvez pas utiliser les champs d'en-tête HTTP Cache-Control ou Pragma dans la demande GET d'un utilisateur pour forcer CloudFront à revenir au serveur d'origine pour l'objet. CloudFront ignore ces champs d'en-tête dans les demandes 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 obtenir un exemple d'ajout de champs d'en-tête Cache-Control et Expires à l'aide du kit SDK AWS pour PHP, consultez Chargement d'un objet grâce au kit SDK AWS pour PHP dans le Manuel du développeur Amazon Simple Storage Service. Certains outils tiers peuvent également ajouter ces champs.

Spécification du délai pendant lequel CloudFront garde les objets en cache pour les distributions web

Pour les 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 conservera un objet dans le cache avant de transmettre une autre demande à 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 transmettre tous les en-têtes à votre origine pour un comportement de cache, il 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 Minimum TTL (Durée de vie minimum), Maximum TTL (Durée de vie maximale) et Default TTL (Durée de vie par défaut), vous devez sélectionner l'option Customize (Personnaliser) pour le paramètre Object Caching (Mise en cache des objets).

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

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

Mise en cache CloudFront

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.

Mise en cache CloudFront

La conservation 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 > maximum TTL

    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 de directive Cache-Control max-age aux objets

Mise en cache CloudFront

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.

Mise en cache CloudFront

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

Mise en cache CloudFront

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.

Mise en cache CloudFront

La conservation 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 > maximum TTL

    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

Mise en cache CloudFront

CloudFront garde en cache les objets jusqu'à la date indiquée dans l'en-tête Expires ou en fonction de 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.

Mise en cache CloudFront

La conservation en cache par 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 > maximum TTL

    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 des private aux objets

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

Pour consulter une exception à la façon dont CloudFront gère l'en-tête Cache-Control: no-cache, reportez-vous à la section Demandes simultanées pour le même objet (pics de trafic).

Mise en cache CloudFront

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 des 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écification de la durée minimale pendant laquelle 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 transmettre une autre demande à l'origine. La durée minimale est de 3600 secondes (une heure). Si vous spécifiez une valeur inférieure, CloudFront utilise tout de même 3 600 secondes.

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

Note

Dans 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 aux 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. Dans la liste Bucket name (Nom du compartiment) de la console Amazon S3, 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.