Comment puis-je résoudre les problèmes de latence de mon site Web statique hébergé sur Amazon S3 et servi via CloudFront ?

Lecture de 7 minute(s)
0

Le contenu statique de mon site Web est hébergé sur un compartiment Amazon Simple Storage Service (Amazon S3) et diffusé aux utilisateurs via une distribution Amazon CloudFront. Le contenu de mon site Web se charge lentement ou je vois que la métrique TTFB (Time To First Byte, ou temps jusqu'au premier octet) est élevée. Je veux résoudre le problème de latence lors du chargement du contenu statique de mon site Web.

Brève description

Pour résoudre les problèmes de latence lors du chargement du contenu statique de votre site Web, identifiez les événements suivants qui contribuent à la latence :

  1. Le client envoie une requête DNS pour le nom de domaine (le processus de recherche DNS).
  2. Le client envoie la requête au serveur Web (réseau de diffusion de contenu CloudFront), y compris la négociation SSL/TLS.
  3. CloudFront traite la requête et diffuse le contenu du cache, ou CloudFront envoie la requête vers l'origine (Amazon S3).

Les performances de ces événements dépendent de ce qui suit :

  • Le navigateur Web et les ressources sur le système local.
  • Le réseau local.
  • Le serveur DNS local.
  • Le routeur, le pare-feu ou le proxy local.
  • Le serveur DNS en amont.
  • Le fournisseur de services Internet.
  • Amazon S3 et CloudFront.

Résolution

Identifiez l'événement qui contribue à la latence. Vérifiez les performances de chaque composant d'une requête pour le contenu de votre site Web en utilisant les outils pour développeurs de votre navigateur Web. Par exemple, si vous utilisez Mozilla Firefox, consultez Firefox Developer Tools (Outils pour développeurs Firefox) et Network request details (Détails des demandes réseau) sur le site Web MDN Web Docs.

Une fois que vous avez déterminé quels événements contribuent à la latence, passez en revue les considérations suivantes pour réduire le temps de ces événements.

Le client envoie une requête DNS pour le nom de domaine (le processus de recherche DNS)

Prenez connaissance des manières permettant d'optimiser le processus de recherche DNS :

  • Lancez ou augmentez la mise en cache DNS côté client.
  • Définissez ou augmentez le cache DNS sur le serveur DNS local.
  • Si le serveur DNS du résolveur du fournisseur de services Internet est à l'origine de la latence, pensez à utiliser des serveurs DNS publics.

Lorsque le client envoie la requête au serveur Web (réseau de diffusion de contenu CloudFront), y compris la négociation SSL/TLS

Prenez connaissance des manières suivantes qui permettent de réduire le temps de connexion client à serveur :

  • Optimisez les performances de votre réseau local en modifiant votre mise en cache Web, votre fournisseur de services Internet ou vos itinéraires réseau. La connexion entre votre navigateur Web et CloudFront dépend des variables suivantes :
  • Réseau local.
  • Bande passante fournie par le fournisseur de services Internet.
  • Acheminement réseau ou sauts nécessaires jusqu'au point de présence (POP) de CloudFront le plus proche du client.
  • Il est recommandé de configurer le chemin d'accès le plus optimisé aux ressources Web. De plus, l'utilisation du bon résolveur DNS autorise votre navigateur Web à trouver l'emplacement du point de présence le plus proche et le mieux adapté.
  • Utilisez la mise en cache locale pour réduire les requêtes de ressources provenant du serveur (CloudFront). La mise en cache locale est particulièrement utile pour les objets statiques qui ne changent pas souvent, tels que CSS, JavaScript ou des images. Pour votre contenu statique hébergé sur Amazon S3, ajoutez un en-tête Cache-Control aux objets. L'en-tête Cache-Control indique aux navigateurs Web de conserver le contenu du site Web dans la mémoire du navigateur ou sur le disque local pendant un certain temps. Pendant ce temps, le navigateur Web charge le contenu à partir de la mémoire locale au lieu d'interroger le contenu via Internet. Utilisez la console Amazon S3 pour définir un en-tête Cache-Control.
  • Si vous disposez déjà d'un proxy de transfert HTTP de mise en cache local, spécifiez une taille de cache suffisamment grande pour le contenu de votre site Web. Cela réduira le nombre de requêtes envoyées via Internet, car les pages fréquemment consultées sont stockées dans le cache de votre proxy local.

CloudFront traite la requête et diffuse le contenu du cache, ou CloudFront envoie la requête vers l'origine (Amazon S3)

Réduisez la latence lors du chargement de votre site Web en diffusant plus de contenu à partir du cache et en réduisant les requêtes de contenu à partir de l'origine. Optimisez votre configuration CloudFront afin que votre contenu Web soit diffusé principalement à partir du cache :

  • Utilisez la politique de cache CachingOptimized gérée par AWS pour vos comportements de cache qui diffusent du contenu statique depuis Amazon S3.
  • Augmentez la durée de mise en cache minimale du contenu statique sur CloudFront. Vous pouvez également augmenter la durée de mise en cache minimale sur le comportement par défaut de votre distribution CloudFront. L'un des moyens d'augmenter la durée de mise en cache minimale sur le comportement par défaut de votre distribution consiste à augmenter la valeur TTL minimale. Lorsque vous augmentez la valeur TTL minimale, CloudFront met les objets en cache plus longtemps au lieu de demander les objets depuis votre origine Amazon S3.
  • Vérifiez vos paramètres de réacheminement ou de cache pour les en-têtes ou les chaînes de requête. La mise en cache CloudFront est optimisée lorsque les valeurs de Cache Based on Selected Request Headers (Cache basé sur les en-têtes de requête sélectionnés) et Query String Forwarding and Caching (Transfert et mise en cache des chaînes de requête) sont définies sur None (Improves Caching) (Aucun (Améliore la mise en cache)). S'il est nécessaire de transférer ou de mettre en cache en fonction de ces valeurs, veillez à préciser quels en-têtes et chaînes de requête sont concernés.
    Remarque : ne configurez pas CloudFront pour transmettre les cookies à une origine Amazon S3. Amazon S3 ne traite pas les cookies.
  • Lancez la compression sur votre distribution CloudFront. Lorsque vous lancez la compression, CloudFront compresse automatiquement les objets à l'emplacement périphérique ou à l'emplacement de point de présence, puis diffuse les objets compressés. Cela réduit le temps de téléchargement et améliore les performances de chargement des pages.
  • Utilisez des comportements de cache distincts pour le contenu statique. Il est recommandé d'utiliser différents comportements de cache pour le contenu statique et le contenu dynamique.

Suivez ces étapes pour configurer les paramètres de cache optimaux pour votre contenu statique :

  1. Ouvrez la console CloudFront.
  2. Dans la liste des distributions, choisissez la distribution qui diffuse le contenu statique de votre site Web.
  3. Choisissez l'onglet Behaviors (Comportements).
  4. Créez un nouveau comportement pour le contenu statique ou modifiez un comportement existant pour le modèle de chemin de votre contenu statique. Pour modifier un comportement existant, sélectionnez le comportement, puis choisissez Edit (Modifier).
  5. Sous Demandes de clé de cache et demandes d'origine, sélectionnez Politique de cache et politique de demande d'origine.
  6. Pour Politique de cache, choisissez CachingOptimized.
  7. Pour Origin request policy (Politique de demande d’origine), choisissez None (Aucun) ou laissez ce champ vide. Les politiques de demande d'origine sont facultatives et ne constituent pas une bonne pratique pour les origines S3.
  8. Choisissez Save changes (Enregistrer les modifications).

Informations connexes

Livraison dynamique sur l'ensemble du site avec Amazon CloudFront

Optimisation de la mise en cache et de la disponibilité

Gestion de la durée de conservation d'un contenu dans un cache de périphérie (expiration)

Diffusion de fichiers compressés

Comment puis-je collecter les valeurs d'ID de requête Amazon S3 demandées par AWS Support ?

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an