[Ne] pas utiliser CDN

Pratiquement tous les articles ou outils d'optimisation de la vitesse des sites incluent une mention discrĂšte de « l'utilisation de CDN ». En effet, un CDN est un rĂ©seau de distribution de contenu. Dans notre entreprise « MĂ©thode Lab », nous sommes souvent confrontĂ©s aux questions des clients Ă  ce sujet, certains activant eux-mĂȘmes un CDN. L'objectif de cet article est de comprendre ce que peut apporter un CDN en termes de vitesse de chargement du site, quels problĂšmes peuvent survenir et dans quels cas l'utilisation d'un CDN est justifiĂ©e.

[Ne] pas utiliser CDN

Les retards entourés sur l'image sont causés par l'utilisation d'un CDN.

Un peu d'histoire

Comme beaucoup de technologies, les CDN sont apparus par nécessité. Avec l'évolution des canaux Internet des utilisateurs, des services de vidéo en ligne ont vu le jour. Il est évident que le contenu vidéo nécessite une bande passante bien plus importante par rapport au contenu classique des sites (images, texte, et code CSS ou JS).

Lors d'une tentative de diffusion simultanée d'un flux vidéo à de nombreux clients à partir d'un seul serveur, le goulot d'étranglement sera probablement le canal Internet du serveur. En général, quelques milliers de flux suffisent à saturer un canal serveur typique. Bien sûr, d'autres limitations de ressources peuvent exister, mais elles ne sont pas pertinentes ici. Il est également important de noter que l'augmentation de la capacité du canal serveur est souvent trop coûteuse (et parfois impossible), et qu'elle n'est pas non plus judicieuse. La charge sur le canal durant les diffusions aura un caractÚre cyclique.

Le problĂšme de limitation de bande passante d'un serveur unique est parfaitement rĂ©solu par un CDN. Les clients ne se connectent pas directement au serveur, mais Ă  des nƓuds du rĂ©seau CDN. IdĂ©alement, le serveur transmet un seul flux Ă  un nƓud CDN, tandis que le rĂ©seau utilise ses propres ressources pour livrer ce flux Ă  de nombreux utilisateurs. D'un point de vue Ă©conomique, nous ne payons que pour les ressources effectivement consommĂ©es (ce qui peut ĂȘtre la bande passante ou les donnĂ©es) et obtenons une excellente Ă©volutivitĂ© de notre service. L'utilisation de CDN pour la livraison de contenu lourd est entiĂšrement justifiĂ©e et logique. Cependant, il convient de noter que les plus grands acteurs de ce domaine (comme Netflix) construisent leurs propres CDN plutĂŽt que d'utiliser de grands CDN commerciaux (Akamai, Cloudflare, Fastly, etc.).

Au fur et Ă  mesure que le web Ă©volue, les applications web elles-mĂȘmes deviennent plus complexes et lourdes. Le problĂšme de la vitesse de chargement est devenu central. Les passionnĂ©s de vitesse des sites ont rapidement identifiĂ© quelques problĂšmes principaux qui entraĂźnaient un chargement lent des sites. L'un de ces problĂšmes Ă©tait les retards rĂ©seau (RTT — round trip time ou temps de ping). Les retards influencent de nombreux processus lors du chargement d'un site : l'Ă©tablissement de la connexion TCP, le dĂ©marrage de la session TLS, le chargement de chaque ressource distincte (image, fichier JS, document HTML, etc.)

Le problĂšme Ă©tait aggravĂ© par le fait qu'avec le protocole HTTP/1.1 (avant l'apparition de SPDY, QUIC et HTTP/2, c'Ă©tait la seule option), les navigateurs n'ouvraient pas plus de 6 connexions TCP Ă  un mĂȘme hĂŽte. Tout cela entraĂźnait des temps d'attente pour la connexion et une utilisation inefficace de la bande passante. Le problĂšme Ă©tait partiellement rĂ©solu par le sharding de domaine — la crĂ©ation d'hĂŽtes supplĂ©mentaires pour contourner la limite du nombre de connexions.

C'est ici qu'apparaĂźt la deuxiĂšme capacitĂ© du CDN – la rĂ©duction des retards (RTT) grĂące Ă  un grand nombre de points et Ă  la proximitĂ© des nƓuds avec l'utilisateur. La distance joue un rĂŽle dĂ©cisif : la vitesse de la lumiĂšre est limitĂ©e (environ 200 000 km/s dans la fibre optique). Cela signifie que chaque 1000 km parcourus ajoute 5 ms de retard ou 10 ms au RTT. Ce sont les coĂ»ts de temps minimaux pour le transfert, car il existe encore des retards sur le matĂ©riel intermĂ©diaire. Comme le CDN est gĂ©nĂ©ralement capable de mettre en cache des objets sur ses serveurs, nous pouvons bĂ©nĂ©ficier du chargement de ces objets via le CDN. Les conditions nĂ©cessaires pour cela sont : la prĂ©sence de l'objet dans le cache et la proximitĂ© du point CDN avec l'utilisateur par rapport au serveur d'application web (serveur d'origine). Il est important de comprendre que la proximitĂ© gĂ©ographique du nƓud CDN ne garantit pas de faibles retards. Le routage entre le client et le CDN peut ĂȘtre configurĂ© de telle maniĂšre que le client se connecte Ă  un hĂŽte dans un autre pays, voire sur un autre continent. C'est ici que les relations entre les opĂ©rateurs de tĂ©lĂ©communications et le service CDN entrent en jeu (peering, existence d'interconnexions, participation aux IX, etc.) et la politique de routage du trafic du CDN lui-mĂȘme. Par exemple, Cloudflare, lors de l'utilisation de ses deux plans de base (gratuit et peu coĂ»teux), ne garantit pas la livraison de contenu depuis le nƓud le plus proche – le choix de l'hĂŽte sera effectuĂ© pour atteindre le coĂ»t minimum.

De nombreuses entreprises internet de premier plan suscitent l'intĂ©rĂȘt du public (dĂ©veloppeurs web et propriĂ©taires de services) pour le sujet de la vitesse de chargement et de fonctionnement des sites. Parmi ces entreprises, on trouve Yahoo (outil Yslow), AOL (WebPageTest) et Google (service Page Speed Insights), qui dĂ©veloppent leurs propres recommandations pour accĂ©lĂ©rer les sites (celles-ci concernent principalement l'optimisation cĂŽtĂ© client). Plus tard, de nouveaux outils de test de vitesse de site font leur apparition, offrant Ă©galement des conseils pour augmenter la vitesse des sites. Dans chacun de ces services ou plugins, on trouve la recommandation invariable « Utilisez un CDN ». Pour expliquer l'effet du CDN, on indique gĂ©nĂ©ralement la rĂ©duction des latences rĂ©seau. Malheureusement, tous ne sont pas prĂȘts Ă  comprendre comment l'effet d'accĂ©lĂ©ration du CDN est atteint et comment il peut ĂȘtre mesurĂ©, si bien que cette recommandation est prise pour argent comptant et utilisĂ©e comme un postulat. En rĂ©alitĂ©, tous les CDN ne sont pas Ă©galement utiles.

L'utilisation de CDN aujourd'hui

Pour évaluer l'utilité de l'application des CDN, il convient de les classer. Voici ce que l'on peut rencontrer en pratique (les exemples entre parenthÚses ne sont bien sûr pas exhaustifs) :

  1. CDN gratuits pour la distribution de bibliothĂšques JS (MaxCDN, Google, Yandex).
  2. CDN pour l'optimisation cÎté client (par exemple, Google Fonts pour les polices, Cloudinary, Cloudimage pour les images).
  3. CDN pour la gestion des fichiers statiques et l'optimisation des ressources dans les CMS (disponibles dans Bitrix, WordPress et d'autres).
  4. CDN généralistes (StackPath, CDNVideo, NGENIX, Megafon).
  5. CDN pour l'accélération des sites (Cloudflare, Imperva, Airi).

La principale diffĂ©rence entre ces types rĂ©side dans la part du trafic qui passe par le CDN. Les types 1 Ă  3 concernent la livraison d'une partie seulement du contenu : d'une seule requĂȘte Ă  plusieurs dizaines (gĂ©nĂ©ralement des images). Les types 4 et 5 impliquent un proxy complet du trafic via le CDN.

En pratique, cela signifie le nombre de connexions nĂ©cessaires pour charger le site. En utilisant HTTP/2, nous utilisons une seule connexion TCP Ă  l'hĂŽte pour gĂ©rer un nombre illimitĂ© de requĂȘtes. Si nous sĂ©parons les ressources entre l'hĂŽte principal (origin) et le CDN, nous devons rĂ©partir les requĂȘtes sur plusieurs domaines et Ă©tablir plusieurs connexions TCP. Pire encore, cela donne : DNS (1 RTT) + TCP (1 RTT) + TLS (2-3 RTT) = 6-7 RTT. Dans cette formule, les latences dans les rĂ©seaux mobiles pour l'activation du canal radio de l'appareil (s'il n'Ă©tait pas actif) et les dĂ©lais sur la station mobile ne sont pas pris en compte.

Voici à quoi cela ressemble sur le graphique de chargement du site (les retards de connexion au CDN sont mis en évidence avec un RTT de 150 ms) :

[Ne] pas utiliser CDN

Si le CDN couvre tout le trafic du site (à l'exception des services externes), nous pouvons utiliser une seule connexion TCP, économisant ainsi des délais de connexion à des hÎtes supplémentaires. Bien sûr, cela concerne les connexions HTTP/2.

Les diffĂ©rences suivantes sont dĂ©terminĂ©es par la fonctionnalitĂ© spĂ©cifique du CDN – pour le premier type, il s'agit simplement . C'est trĂšs pratique d'avoir tout au mĂȘme endroit. GrĂące Ă  cela, en cas de problĂšme, nos spĂ©cialistes vous aideront Ă  le rĂ©soudre dans les plus brefs dĂ©lais. d'un fichier statique, pour le cinquiĂšme, il s'agit de modifier plusieurs types de contenu du site pour optimiser.

Capacités du CDN pour accélérer le site

Décrivons l'éventail complet des capacités du CDN pour accélérer les sites, sans tenir compte de la fonctionnalité des différents types de CDN, puis voyons ce qui est réalisé dans chacun d'eux.

1. Compression des ressources textuelles

La capacitĂ© la plus basique et Ă©vidente, pourtant souvent mal mise en Ɠuvre. Tous les CDN annoncent la compression comme une de leurs fonctionnalitĂ©s d'accĂ©lĂ©ration. Mais en regardant de plus prĂšs, des lacunes apparaissent :

  • des degrĂ©s faibles peuvent ĂȘtre utilisĂ©s pour la compression dynamique – 5-6 (par exemple, pour gzip, le maximum est 9) ;
  • dans la compression statique (fichiers dans le cache), aucune fonctionnalitĂ© supplĂ©mentaire n'est utilisĂ©e (par exemple, zopfi ou brotli avec un degrĂ© de 11)
  • il n'y a pas de support pour une compression efficace brotli (Ă©conomie d'environ 20 % par rapport Ă  gzip).

Si vous utilisez un CDN, il vaut la peine de vĂ©rifier quelques points : prenez un fichier qui est venu du CDN, notez sa taille en version compressĂ©e et dĂ©compressez-le manuellement pour comparaison (vous pouvez utiliser un service en ligne prenant en charge brotli, par exemple ĐČŃŃ‘ŃĐ¶Đ°Ń‚ŃŒ.рф).

2. Configuration des en-tĂȘtes de cache client

Une autre fonction simple d'accĂ©lĂ©ration : mettre des en-tĂȘtes pour le caching du contenu par le client (navigateur). L'en-tĂȘte le plus pertinent est cache-control, l'ancien est expires. En outre, Etag peut ĂȘtre utilisĂ©. L'essentiel est que max-age du cache-control soit suffisamment grand (au moins un mois), si vous ĂȘtes prĂȘt Ă  mettre le cache du resource aussi strictement que possible, vous pouvez ajouter l'option immutable.

Les CDN peuvent rĂ©duire la valeur max-age, obligeant l'utilisateur Ă  recharger plus frĂ©quemment la statique. Pourquoi cela se produit-il : est-ce un dĂ©sir d'augmenter le trafic sur Internet ou une meilleure compatibilitĂ© avec des sites incapables de vider le cache ? Ce n'est pas clair. Par exemple, la durĂ©e de mise en cache dans les en-tĂȘtes Cloudflare est par dĂ©faut de 1 heure, ce qui est trĂšs court pour une statique inchangĂ©e.

3. Optimisation des images

Puisque le CDN prend en charge la mise en cache et la livraison des images, il est logique de les optimiser du cÎté du CDN et de les délivrer aux utilisateurs de cette maniÚre. Notons tout de suite que cette possibilité n'est disponible que pour les types de CDN 2, 3 et 5.

Les images peuvent ĂȘtre optimisĂ©es de diffĂ©rentes maniĂšres : en utilisant des formats de compression avancĂ©s (comme WebP), des encodeurs plus efficaces (MozJPEG) ou simplement en nettoyant les mĂ©tadonnĂ©es superflues.

Il existe en gĂ©nĂ©ral deux types d'optimisations : avec perte de qualitĂ© et sans perte de qualitĂ©. Les CDN cherchent gĂ©nĂ©ralement Ă  utiliser une optimisation sans perte afin d'Ă©viter de possibles plaintes des clients sur un changement de la qualitĂ© des images. Dans ces conditions, le gain sera minime. En rĂ©alitĂ©, le niveau de qualitĂ© JPEG dĂ©passe souvent ce qui est nĂ©cessaire, et il est possible d'effectuer une recompression avec un taux de qualitĂ© infĂ©rieur, sans nuire Ă  la perception par les utilisateurs. D'autre part, dĂ©terminer un niveau de qualitĂ© et des rĂ©glages universels pour toutes les applications web possibles est difficile, donc les CDN utilisent des paramĂštres plus conservateurs par rapport Ă  ceux qui pourraient ĂȘtre appliquĂ©s en tenant compte du contexte (destination des images, type d'application web, etc.)

4. Optimisation de la connexion TLS

Aujourd'hui, la majorité du trafic est transmise par des connexions TLS, ce qui signifie que nous perdons du temps sur l'établissement TLS. Récemment, de nouvelles technologies ont été développées pour accélérer ce processus. Par exemple, la cryptographie EC, TLS 1.3, le cache de session et les tickets de session (session tickets), l'accélération matérielle du chiffrement (AES-NI), etc. Une bonne configuration TLS permet de réduire le temps de connexion à 0-1 RTT (sans compter DNS et TCP).

Avec des logiciels modernes, il n'est pas difficile d'implémenter de telles pratiques sur ses propres ressources.

Loin de tous les CDN appliquent les meilleures pratiques en matiĂšre de TLS, ce qui peut ĂȘtre vĂ©rifiĂ© en mesurant le temps de connexion TLS (par exemple, dans Webpagetest). IdĂ©alement, pour une nouvelle connexion, 1 RTT est parfait, 2 RTT est un niveau moyen, 3 RTT et plus sont mauvais.

Il convient Ă©galement de noter que mĂȘme en utilisant TLS au niveau du CDN, le serveur avec notre application web doit Ă©galement traiter TLS, mais du cĂŽtĂ© du CDN, car le trafic entre le serveur et le CDN passe par un rĂ©seau public. Dans le pire des cas, nous avons des dĂ©lais TLS doublĂ©s (le premier vers l'hĂŽte CDN, le deuxiĂšme entre lui et notre serveur).

Pour certaines applications, il convient de prĂȘter attention aux questions de sĂ©curitĂ© : gĂ©nĂ©ralement, le trafic est dĂ©chiffrĂ© aux nƓuds CDN, ce qui constitue une possibilitĂ© potentielle d'interception du trafic. Une option de fonctionnement sans divulguer le trafic est gĂ©nĂ©ralement proposĂ©e dans les forfaits premium moyennant un supplĂ©ment.

5. Réduction des délais de connexion

Le principal avantage du CDN, dont tout le monde parle : de faibles délais (moins de distance) entre l'hÎte CDN et l'utilisateur. Cela est réalisé grùce à une architecture réseau géographiquement distribuée, dans laquelle les hÎtes se trouvent dans des points de concentration des utilisateurs (villes, points d'échange de trafic, etc.).

En pratique, les prioritĂ©s des diffĂ©rents rĂ©seaux peuvent se concentrer dans des rĂ©gions spĂ©cifiques. Par exemple, les CDN russes auront plus de points de prĂ©sence en Russie. Les amĂ©ricains dĂ©velopperont principalement leur rĂ©seau aux États-Unis. Par exemple, l'un des plus grands CDN, Cloudflare, n'a que 2 points en Russie - Moscou et Saint-PĂ©tersbourg. Cela signifie que nous pouvons Ă©conomiser au maximum environ 10 ms de latence par rapport Ă  un hĂ©bergement direct Ă  Moscou.

La plupart des CDN occidentaux n'ont tout simplement pas de points en Russie. En vous connectant Ă  eux, vous pouvez uniquement augmenter la latence pour votre public russe.

6. Optimisation du contenu (minification, modifications structurelles)

Le point le plus complexe et technique. Modifier le contenu lors de la livraison peut ĂȘtre trĂšs risquĂ©. MĂȘme si l'on considĂšre la minification : la rĂ©duction du code source (en Ă©liminant les espaces inutiles, les constructions non pertinentes, etc.) peut affecter son fonctionnement. En ce qui concerne des modifications plus sĂ©rieuses – le transfert du code JS Ă  la fin du HTML, la fusion de fichiers et similaires – le risque de rompre la fonctionnalitĂ© du site est encore plus Ă©levĂ©.

C'est pourquoi seuls quelques CDN de type 5 s'en occupent. Bien sûr, il n'est pas possible d'automatiser tous les changements nécessaires pour accélérer le processus, une analyse manuelle et une optimisation sont requises. Par exemple, la suppression de code inutilisé ou dupliqué fait partie des tùches manuelles.

En général, toutes ces optimisations sont gérées par les paramÚtres et les options les plus dangereuses sont désactivées par défaut.

Support des fonctionnalités d'accélération par types de CDN

Alors, examinons quelles opportunités potentielles d'accélération offrent les différents types de CDN.

Pour la commodité, récapitulons la classification.

  1. CDN gratuits pour la distribution de bibliothĂšques JS (MaxCDN, Google, Yandex).
  2. CDN pour l'optimisation cÎté client (par exemple, Google Fonts pour les polices, Cloudinary, Cloudimage pour les images).
  3. CDN pour la gestion des fichiers statiques et l'optimisation des ressources dans les CMS (disponibles dans Bitrix, WordPress et d'autres).
  4. CDN généralistes (StackPath, CDNVideo, NGENIX, Megafon).
  5. CDN pour l'accélération des sites (Cloudflare, Imperva, Airi).

Nous allons maintenant faire correspondre les caractéristiques et les types de CDN.

Possibilité
Type 1
Type 2
Type 3
Type 4
Type 5

Compression de texte
+–
–
+–
+–
+

En-tĂȘtes de cache
+
+
+
+
+

Images
–
+–
+–
–
+

TLS
–
–
–
+–
+

Retards
–
–
–
+
+

Contenu
–
–
–
–
+

Dans ce tableau, « + » est utilisĂ© pour indiquer un soutien complet, « – » pour l'absence, « +– » pour un soutien partiel. Bien sĂ»r, des dĂ©viations par rapport Ă  ce tableau peuvent exister dans la rĂ©alitĂ© (par exemple, un CDN gĂ©nĂ©ral pourrait intĂ©grer des fonctionnalitĂ©s d'optimisation d'images), mais il est utile pour avoir une vision gĂ©nĂ©rale.

Résultats

J'espÚre qu'en lisant cet article, vous aurez une vision plus claire de la recommandation « utilisez un CDN » pour accélérer les sites.

Comme dans n'importe quel domaine, il ne faut pas croire aux promesses marketing d'un service. L'effet doit ĂȘtre mesurĂ© et vĂ©rifiĂ© dans des conditions rĂ©elles. Si vous utilisez dĂ©jĂ  un CDN, vĂ©rifiez son efficacitĂ© selon les critĂšres dĂ©crits dans l'article.

Il est possible que l'utilisation d'un CDN ralentisse actuellement le chargement de votre site.

En guise de recommandation gĂ©nĂ©rale, vous pouvez considĂ©rer ce qui suit : Ă©tudiez votre audience, dĂ©finissez ses limites gĂ©ographiques. Si votre audience principale est concentrĂ©e dans un rayon de 1 Ă  2 mille kilomĂštres, vous n'avez pas besoin d'un CDN pour sa fonction principale – la rĂ©duction des latences. Au lieu de cela, vous pouvez placer votre serveur plus prĂšs des utilisateurs et le configurer correctement, en obtenant la plupart des optimisations dĂ©crites dans l'article (gratuitement et en permanence).

Si votre audience est véritablement géographiquement dispersée (rayon supérieur à 3000 kilomÚtres), l'utilisation d'un CDN de qualité sera effectivement bénéfique. Cependant, il est important de comprendre à l'avance ce que votre CDN peut réellement accélérer (voir le tableau des capacités et leur description). L'accélération de votre site reste néanmoins une tùche complexe qui ne se résout pas simplement par la connexion d'un CDN. En plus des optimisations mentionnées, les moyens les plus efficaces pour accélérer le site sont : l'optimisation cÎté serveur, les modifications avancées cÎté client (suppression de code inutilisé, optimisation du processus de rendu, gestion du contenu, des polices, de l'adaptabilité, etc.)

Source : habr.com

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster