Contenu du cache basé sur les en-têtes des demandes - Amazon CloudFront

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.

Contenu du cache basé sur les en-têtes des demandes

CloudFront vous permet de choisir si vous souhaitez transférer les en-têtes CloudFront vers votre origine et mettre en cache des versions distinctes d'un objet spécifique en fonction des valeurs d'en-tête figurant dans les demandes des utilisateurs. Cela vous permet de servir des versions différentes de votre contenu selon l'appareil employé par l'utilisateur, l'emplacement de l'utilisateur, la langue utilisée par l'utilisateur et différents autres critères.

En-têtes et distributions web : présentation

Par défaut, les en-têtes CloudFront ne sont pas pris en compte lors de la mise en cache de vos objets dans des emplacements périphériques. Si votre origine renvoie deux objets et qu'ils ne diffèrent que par les valeurs des en-têtes de demande, met en CloudFront cache une seule version de l'objet.

Vous pouvez configurer CloudFront pour transférer les en-têtes vers l'origine, ce qui entraîne la mise CloudFront en cache de plusieurs versions d'un objet en fonction des valeurs d'un ou de plusieurs en-têtes de demande. CloudFront Pour configurer la mise en cache des objets en fonction des valeurs d'en-têtes spécifiques, vous devez spécifier les paramètres de comportement du cache pour votre distribution. Pour plus d'informations, consultez Mise en cache basée sur des en-têtes de requête sélectionnés.

Par exemple, supposons que des demandes d'utilisateur pour logo.jpg contiennent un en-tête Product personnalisé ayant la valeur Acme ou Apex. Lorsque vous configurez CloudFront pour mettre en cache vos objets en fonction de la valeur de l'Producten-tête, transférez CloudFront les demandes logo.jpg à l'origine et incluez les valeurs de l'Producten-tête et de l'en-tête. CloudFront met en cache logo.jpg une fois pour les demandes dans lesquelles se trouve la valeur de l'Producten-tête Acme et une fois pour les demandes dans lesquelles la valeur estApex.

Vous pouvez configurer chaque comportement de cache d'une distribution pour exécuter l'une des opérations suivantes :

  • Transmettre tous les en-têtes à votre origine

    Note

    Pour les anciens paramètres de cache : si vous configurez CloudFront pour transférer tous les en-têtes vers votre origine, les objets associés à ce comportement de cache CloudFront ne sont pas mis en cache. Par contre, il envoie chaque demande à l'origine.

  • Transférez la liste des en-têtes que vous spécifiez. CloudFront met en cache vos objets en fonction des valeurs de tous les en-têtes spécifiés. CloudFront transmet également les en-têtes qu'il transmet par défaut, mais il met en cache vos objets uniquement en fonction des en-têtes que vous spécifiez.

  • Transmettre uniquement les en-têtes par défaut. Dans cette configuration, vos objets CloudFront ne sont pas mis en cache en fonction des valeurs contenues dans les en-têtes de demande.

Pour obtenir le quota actuel relatif au nombre d'en-têtes que vous pouvez transférer pour chaque comportement de cache ou pour demander un quota supérieur, consultez la section Quotas sur les en-têtes.

Pour plus d'informations sur l'utilisation de la CloudFront console pour mettre à jour une distribution afin CloudFront de transférer les en-têtes à l'origine, consultezMettre à jour une distribution. Pour plus d'informations sur l'utilisation du CloudFront API pour mettre à jour une distribution existante, consultez Mettre à jour la distribution dans le Amazon CloudFront API Reference.

Sélectionnez les en-têtes sur lesquels baser la mise en cache

Les en-têtes que vous pouvez transférer vers l'origine et sur lesquels CloudFront repose la mise en cache varient selon que votre origine est un compartiment Amazon S3 ou une origine personnalisée.

  • Amazon S3 — Vous pouvez configurer CloudFront pour transférer et mettre en cache vos objets en fonction d'un certain nombre d'en-têtes spécifiques (voir la liste d'exceptions suivante). Cependant, nous vous recommandons d'éviter de transférer des en-têtes ayant une origine Amazon S3, sauf si vous devez implémenter le partage de ressources entre origines (CORS) ou si vous souhaitez personnaliser le contenu en utilisant Lambda @Edge lors d'événements liés à l'origine.

    • Pour configurerCORS, vous devez transférer des en-têtes qui permettent CloudFront de distribuer du contenu pour les sites Web compatibles avec le partage de ressources entre origines ()CORS. Pour de plus amples informations, veuillez consulter Configurer CloudFront pour respecter CORS les paramètres.

    • Pour personnaliser le contenu en utilisant des en-têtes que vous transférez vers votre origine Amazon S3, vous écrivez et ajoutez des fonctions Lambda @Edge et vous les associez à CloudFront votre distribution pour qu'elles soient déclenchées par un événement lié à l'origine. Pour plus d'informations sur l'utilisation des en-têtes afin de personnaliser du contenu, consultez Personnalisation de contenu à l'aide des en-têtes Pays ou Type d'appareil – exemples.

      Nous vous recommandons d'éviter de transférer des en-têtes que vous n'utilisez pas pour personnaliser du contenu, car le transfert d'en-têtes supplémentaires peut réduire votre taux d'accès au cache. En d'autres termes, il ne CloudFront peut pas répondre à autant de demandes provenant des caches périphériques par rapport à l'ensemble des demandes.

  • Origine personnalisée — Vous pouvez configurer le cache CloudFront en fonction de la valeur de n'importe quel en-tête de demande, à l'exception de ce qui suit :

    • Connection

    • Cookie – Si vous souhaitez effectuer la transmission et la mise en cache en fonction de cookies, vous utilisez un paramètre distinct dans votre distribution. Pour de plus amples informations, veuillez consulter Contenu du cache basé sur les cookies.

    • Host (for Amazon S3 origins)

    • Proxy-Authorization

    • TE

    • Upgrade

    Vous pouvez configurer CloudFront pour mettre en cache des objets en fonction des valeurs User-Agent des en-têtes Date et, mais nous ne le recommandons pas. Ces en-têtes ont de nombreuses valeurs possibles, et la mise en cache basée sur leurs valeurs peut entraîner le transfert d'un plus grand nombre de demandes CloudFront vers votre origine.

Pour une liste complète des en-têtes de HTTP demande et de la manière dont ils CloudFront sont traités, consultezHTTPen-têtes et CloudFront comportement des demandes (personnalisés et origines d'Amazon S3).

Configurer CloudFront pour respecter CORS les paramètres

Si vous avez activé le partage de ressources entre origines (CORS) sur un compartiment Amazon S3 ou une origine personnalisée, vous devez choisir des en-têtes spécifiques à transférer, afin de respecter les CORS paramètres. Les en-têtes que vous devez transférer diffèrent en fonction de l'origine (Amazon S3 ou origine personnalisée) et selon que vous souhaitez ou non mettre en cache les réponses OPTIONS.

Amazon S3

  • Si vous souhaitez que les réponses OPTIONS soient mises en cache, procédez comme suit :

    • Choisissez les options pour les paramètres de comportement de cache par défaut qui permettent la mise en cache pour les réponses OPTIONS.

    • Configurez CloudFront pour transférer les en-têtes suivants : OriginAccess-Control-Request-Headers, etAccess-Control-Request-Method.

  • Si vous ne souhaitez pas que OPTIONS les réponses soient mises en cache, configurez CloudFront pour transférer l'Originen-tête, ainsi que tous les autres en-têtes requis par votre origine (par exemple, Access-Control-Request-HeadersAccess-Control-Request-Method, ou autres).

Origines personnalisées – Transmettez l'en-tête Origin en même temps que tous les autres en-têtes requis par votre origine.

CloudFront Pour configurer la mise en cache des réponses en fonction deCORS, vous devez configurer CloudFront pour transférer les en-têtes à l'aide d'une politique de cache. Pour de plus amples informations, veuillez consulter Contrôlez la clé de cache à l'aide d'une politique.

Pour plus d'informations sur CORS Amazon S3, consultez la section Utilisation du partage de ressources entre origines (CORS) dans le guide de l'utilisateur d'Amazon Simple Storage Service.

Configuration de la mise en cache en fonction du type d'appareil

Si vous souhaitez CloudFront mettre en cache différentes versions de vos objets en fonction de l'appareil utilisé par l'utilisateur pour afficher votre contenu, configurez CloudFront pour transférer les en-têtes applicables vers votre origine personnalisée :

  • CloudFront-Is-Desktop-Viewer

  • CloudFront-Is-Mobile-Viewer

  • CloudFront-Is-SmartTV-Viewer

  • CloudFront-Is-Tablet-Viewer

Sur la base de la valeur de l'User-Agenten-tête, CloudFront définit la valeur de ces en-têtes false avant true ou avant le transfert de la demande à votre origine. Si un appareil entre dans plusieurs catégories, plusieurs valeurs peuvent être true. Par exemple, pour certaines tablettes, CloudFront vous pouvez définir les deux options CloudFront-Is-Mobile-Viewer et la valeur CloudFront-Is-Tablet-Viewer surtrue.

Configuration de la mise en cache en fonction de la langue du visualiseur

Si vous souhaitez CloudFront mettre en cache différentes versions de vos objets en fonction de la langue spécifiée dans la demande, configurez CloudFront pour transmettre l'Accept-Languageen-tête à votre origine.

Configurer la mise en cache en fonction de l'emplacement du visualiseur

Si vous souhaitez CloudFront mettre en cache différentes versions de vos objets en fonction du pays d'origine de la demande, configurez CloudFront pour transférer l'CloudFront-Viewer-Countryen-tête à votre origine. CloudFront convertit automatiquement l'adresse IP d'où provient la demande en un code de pays à deux lettres. Pour une easy-to-use liste des codes de pays, triable par code et par nom de pays, voir l'entrée ISO3166-1 alpha-2 de Wikipédia.

Configurer la mise en cache en fonction du protocole de la demande

Si vous souhaitez CloudFront mettre en cache différentes versions de vos objets en fonction du protocole de la demandeHTTPS, HTTP ou configurer CloudFront pour transmettre l'CloudFront-Forwarded-Protoen-tête à votre origine.

Configuration de la mise en cache pour les fichiers compressés

Si votre origine prend en charge la compression Brotli, vous pouvez effectuer une mise en cache en fonction de l'en-tête Accept-Encoding. Configurez la mise en cache en fonction de Accept-Encoding uniquement si votre origine traite différents contenus selon l'en-tête.

Incidence de la mise en cache basée sur les en-têtes sur les performances

Lorsque vous configurez CloudFront le cache en fonction d'un ou de plusieurs en-têtes et que les en-têtes ont plusieurs valeurs possibles, CloudFront transfère davantage de demandes à votre serveur d'origine pour le même objet. Ceci ralentit les performances et augmente la charge sur votre serveur d'origine. Si votre serveur d'origine renvoie le même objet quelle que soit la valeur d'un en-tête donné, nous vous recommandons de ne pas CloudFront configurer le cache en fonction de cet en-tête.

Si vous configurez CloudFront pour transférer plusieurs en-têtes, l'ordre des en-têtes dans les demandes des utilisateurs n'affecte pas la mise en cache tant que les valeurs sont identiques. Par exemple, si une demande contient les en-têtes A:1, B:2 et qu'une autre demande contient B:2, A:1, une seule copie de l'objet est mise en CloudFront cache.

Impact de la casse des en-têtes et des valeurs d'en-tête sur la mise en cache

Lors de la CloudFront mise en cache basée sur les valeurs d'en-tête, il ne prend pas en compte le cas du nom de l'en-tête, mais le cas de la valeur de l'en-tête :

  • Si les demandes de l'utilisateur incluent les deuxproduct:Acme, Product:Acme et ne met en CloudFront cache un objet qu'une seule fois. La seule différence entre les deux est la casse du nom de l'en-tête qui n'a pas d'incidence sur la mise en cache.

  • Si les demandes de l'utilisateur incluent les deux Product:Acme etProduct:acme, met en CloudFront cache un objet deux fois, car la valeur se trouve Acme dans certaines demandes et acme dans d'autres.

En-têtes CloudFront renvoyés au visualiseur

La configuration CloudFront pour transférer et mettre en cache les en-têtes n'a aucune incidence sur les en-têtes CloudFront renvoyés au visualiseur. CloudFront renvoie tous les en-têtes qu'il obtient depuis l'origine, à quelques exceptions près. Pour plus d'informations, consultez la rubrique applicable :