Augmentation de la proportion de demandes servies directement à partir des caches CloudFront (taux d’accès au cache)
Vous pouvez améliorer les performances en augmentant la proportion de demandes utilisateur servies à partir du cache CloudFront plutôt que via un accès à vos serveurs d'origine pour obtenir du contenu. Ce processus est appelé « amélioration du taux d'accès au cache ».
Les sections suivantes expliquent comment améliorer votre taux d'accès au cache.
Rubriques
Spécification de la durée pendant laquelle CloudFront met en cache vos objets
Pour augmenter votre taux d'accès au cache, vous pouvez configurer votre origine de sorte qu'une directive Cache-Control max-agemax-age. Plus la durée de conservation en cache est courte, plus la fréquence selon laquelle CloudFront envoie les demandes à votre origine afin de déterminer si un objet a changé et d'obtenir la dernière version est élevée. Vous pouvez compléter max-age avec les directives stale-while-revalidate et stale-if-error pour améliorer davantage le taux d'accès au cache sous certaines conditions. Pour plus d’informations, consultez Gestion de la durée de conservation de contenu dans le cache (expiration).
Utilisation d’Origin Shield
CloudFront Origin Shield peut contribuer à améliorer le taux d'accès au cache de votre distribution CloudFront en fournissant une couche supplémentaire de mise en cache devant votre origine. Lorsque vous utilisez Origin Shield, toutes les demandes de toutes les couches de mise en cache de CloudFront vers votre origine proviennent d'un seul emplacement. CloudFront peut récupérer chaque objet à l'aide d'une seule demande d'origine à partir d'Origin Shield, tandis que toutes les autres couches du cache CloudFront (emplacements périphériques et caches périphériques régionaux) peuvent récupérer l'objet à partir d'Origin Shield.
Pour plus d’informations, consultez Utilisation d’Amazon CloudFront Origin Shield.
Mise en cache basée sur les paramètres de chaîne de requête
Si vous configurez CloudFront pour effectuer la mise en cache en fonction de paramètres de chaîne de requête, vous pouvez améliorer la mise en cache si vous procédez comme suit :
-
Configurez CloudFront pour réacheminer uniquement les paramètres des chaînes de requête pour lesquels votre origine renverra des objets uniques.
-
Utilisez la même casse (majuscules ou minuscules) pour toutes les instances du même paramètre. Par exemple, si une demande contient
parameter1=Aet une autre demande contientparameter1=a, CloudFront transmet des demandes distinctes à votre origine lorsqu'une demande contientparameter1=Aet l'autre,parameter1=a. CloudFront met alors en cache séparément les objets correspondants renvoyés par votre origine même si les objets sont identiques. Si vous utilisez uniquementAoua, CloudFront transmet moins de demandes à votre origine. -
Listez les paramètres dans le même ordre. Comme avec les différences de casse, si une demande pour un objet contient la chaîne de requête
parameter1=a¶meter2=bet une autre demande contientparameter2=b¶meter1=a, CloudFront transmet les deux demandes à votre origine et met en cache les objets correspondants séparément même s'ils sont identiques. Si vous utilisez uniquement toujours le même ordre pour les paramètres, CloudFront transmet moins de demandes à votre origine.
Pour plus d’informations, consultez Mise en cache de contenu basée sur les paramètres de chaîne de requête. Si vous souhaitez vérifier les chaînes de requête que CloudFront transmet à votre origine, consultez les valeurs de la colonne cs-uri-query de vos fichiers journaux CloudFront. Pour plus d’informations, consultez Journalisation standard (journaux d’accès).
Mise en cache basée sur des valeurs de cookie
Si vous configurez CloudFront pour effectuer la mise en cache en fonction de valeurs de cookie, vous pouvez améliorer la mise en cache si vous procédez comme suit :
-
Configurez CloudFront pour transmettre uniquement les cookies spécifiés et non tous les cookies. Pour les cookies que vous configurez pour que CloudFront les transmette à votre origine, CloudFront transfère chaque combinaison de nom et de valeur de cookie. Il met ensuite en cache séparément les objets renvoyés par votre origine, même s'ils sont tous identiques.
Par exemple, supposons que les utilisateurs incluent deux cookies dans chaque demande, que chaque cookie dispose de trois valeurs possibles et que toutes les combinaisons de valeurs de cookie sont possibles. CloudFront transmet jusqu’à neuf demandes différentes à votre origine pour chaque objet. Si votre origine renvoie des versions différentes d'un objet en fonction d'un seul des cookies, CloudFront transmet plus de demandes à votre origine que nécessaire et met en cache inutilement plusieurs versions identiques de l'objet.
-
Créez des comportements de cache distincts pour les contenus statiques et dynamiques, et configurez CloudFront pour transmettre les cookies à votre origine uniquement pour les contenus dynamiques.
Par exemple, supposons que vous disposiez d'un seul comportement de cache pour votre distribution pour les contenus dynamiques, tels que les fichiers
.jset les fichiers.cssqui changent rarement. CloudFront met en cache des versions distinctes de vos fichiers.cssen fonction des valeurs de cookie. Par conséquent, chaque emplacement périphérique CloudFront transmet une demande à votre origine pour chaque nouvelle combinaison de nom et de valeur de cookie.Si vous créez un comportement de cache pour lequel le modèle de chemin est
*.csset pour lequel CloudFront n'effectue pas la mise en cache selon les valeurs de cookie, CloudFront transmet les demandes de fichiers.cssà votre origine uniquement pour la première demande reçue par un emplacement périphérique pour un fichier.cssdonné et pour la première demande après qu'un fichier.cssexpire. -
Si possible, créez des comportements de cache distincts pour les contenus dynamiques pour lesquels les valeurs de cookie sont uniques pour chaque utilisateur (comme un ID utilisateur) et les contenus dynamiques qui varient selon un plus petit nombre de valeurs uniques.
Pour plus d’informations, consultez Mise en cache de contenu basée sur des cookies. Si vous souhaitez vérifier les cookies que CloudFront transmet à votre origine, consultez les valeurs de la colonne cs(Cookie) de vos fichiers journaux CloudFront. Pour plus d’informations, consultez Journalisation standard (journaux d’accès).
Mise en cache basée sur des valeurs d'en-tête
Si vous configurez CloudFront pour effectuer la mise en cache en fonction de valeurs d'en-tête, vous pouvez améliorer la mise en cache si vous procédez comme suit :
-
Configurez CloudFront pour transmettre et effectuer la mise en cache uniquement en fonction d'en-têtes spécifiés et non de tous les en-têtes. Pour les en-têtes que vous spécifiez, CloudFront transmet chaque combinaison de nom et de valeur d'en-tête. Il met ensuite en cache séparément les objets que votre origine renvoie, même s'ils sont tous identiques.
Note
CloudFront transmet toujours à votre origine les en-têtes spécifiés dans les rubriques suivantes :
-
Traitement et transmission des demandes à votre serveur d’origine Amazon S3 par CloudFront > En-têtes de requête HTTP que CloudFront supprime ou met à jour
-
Traitement et transmission des demandes à votre serveur d’origine personnalisée par CloudFront > En-têtes de requête HTTP et comportement de CloudFront (origines Amazon S3 et personnalisée)
Lorsque vous configurez CloudFront pour effectuer la mise en cache en fonction d'en-têtes de demande, vous ne changez pas les en-têtes que CloudFront transmet. La seule chose qui change est que CloudFront met en cache les objets selon leurs valeurs d'en-tête.
-
-
Essayez d'éviter d'effectuer la mise en cache en fonction d'en-têtes de demande qui ont des nombres importants de valeurs uniques.
Par exemple, si vous souhaitez servir différentes tailles d'une image en fonction de l'appareil de l'utilisateur, ne configurez pas CloudFront pour effectuer la mise en cache en fonction de l'en-tête
User-Agent, qui comporte un nombre considérable de valeurs possibles. Configurez plutôt CloudFront pour exécuter la mise en cache en fonction des en-têtes de type d'appareil CloudFrontCloudFront-Is-Desktop-Viewer,CloudFront-Is-Mobile-Viewer,CloudFront-Is-SmartTV-VieweretCloudFront-Is-Tablet-Viewer. De plus, si vous renvoyez la même version de l'image pour des tablettes et des ordinateurs de bureau, transmettez uniquement l'en-têteCloudFront-Is-Tablet-Viewer, pas l'en-têteCloudFront-Is-Desktop-Viewer.
Pour plus d’informations, consultez Mise en cache de contenu basée sur des en-têtes de demandes.
Supprimer l'en-tête Accept-Encoding lorsqu'une compression n'est pas nécessaire
Si la compression n'est pas activée (parce que l'origine ne la prend pas en charge), CloudFront ne la prend pas en charge, ou si le contenu n'est pas compressible,vous pouvez augmenter le taux d'accès au cache en associant un comportement de cache dans votre distribution à une origine qui définit les Custom Origin Header de la façon suivante :
-
Header name (Nom de l'en-tête:
Accept-Encoding -
Header value (Valeur de l'en-tête) : (laisser vide)
Lorsque vous utilisez cette configuration, CloudFront supprime l'en-tête Accept-Encoding de la clé de cache et n'inclut pas l'en-tête dans les demandes d'origine. Cette configuration s'applique à tous les contenus servis par CloudFront avec la distribution à partir de cette origine.
Diffusion de contenu multimédia via HTTP
Pour plus d'informations sur l'optimisation du contenu vidéo à la demande (VOD) et en streaming, consultez Vidéo à la demande et streaming en direct avec CloudFront.