Quelle est la différence entre un CDN et le Domain Sharding ?

Depuis quelques temps, il est fréquent d’entendre parler d’un CDN. Il existe pourtant un autre terme moins connu, le domain sharding, qui est régulièrement confondu avec un CDN alors que les techniques sont totalement différentes.

Qu’est-ce qu’un domain sharding ?

On lit trop souvent des tutoriels de mise en place d’un CDN alors qu’il s’agit en réalité de domain sharding.

Historique

Traditionnellement, les navigateurs web limitent le nombre de requêtes simultanées vers un même domaine. Cette restriction a été défini dans les spécifications du protocole HTTP/1.1. Le but était de ne pas surcharger les serveurs de requêtes.

Un site Internet avec de nombreuses requêtes HTTP (des images, des fichiers CSS, JS, etc.) était donc pénalisé par cette limite.

Définition

Le domain sharding a été mis en place pour contourner ce système : répartir les fichiers statiques (images, CSS, JS) sur plusieurs sous-domaines. Ainsi, on multiplie le nombre de requêtes simultanées par le nombre de sous-domaines.

On profite également pour charger les contenus sur des sous-domaines sans cookies.

Néanmoins, cette solution n’est pas sans défauts. En effet, chaque sous-domaine rajoute une résolution DNS supplémentaire, ce qui est en général non négligeable en terme de performance. Une résolution DNS fait la corrélation entre l’adresse URL et l’adresse IP qui lui est associée. Cette demande prend entre 120 et 200 ms avant d’être résolue.

Il y a quelques années cette pratique était très recommandée. Aujourd’hui c’est assez différent pour plusieurs raisons.

L’évolution des navigateurs

Les navigateurs ont énormément évolués. Ils effectuent aujourd’hui en moyenne 6 requêtes simultanées par domaine (quand IE n’en autorisait que 2). Avec un nombre peu élevé de requêtes HTTP, la mise en place du domain sharding peut être contre-productive.

Le mobile

Sur mobile, les résolutions DNS sont bien plus longues qu’avec une connexion classique. L’excès de domain sharding peut être très couteux en terme de performance.

Peut-on encore faire du domain-sharding ?

Il n’y a pas de réponse universelle. Tout dépend de votre site et du nombre de requêtes HTTP réalisées. De façon générale, il est conseillé de ne pas dépasser plus de deux sous domaines.

À noter que le protocole HTTP/2.0 va très certainement rendre cette pratique obsolète. C’est d’ailleurs déjà le cas pour SPDY qui est le protocole expérimental crée par Google.

Pour aller plus loin, vous pouvez lire ces articles qui traitent du sujet (en anglais):

Qu’est-ce qu’un CDN (ou Content Delivery network) ?

Un CDN est souvent confondu à tort avec le domain sharding bien qu’il soit totalement différent.

Définition

Un CDN permet de délivrer votre contenu au plus proche géographiquement de vos visiteurs. Cela fonctionne par la multiplication des serveurs à plusieurs endroits dans le monde. La requête HTTP de l’utilisateur est ainsi toujours servie par le serveur le plus proche de sa position.

Un CDN est en général utilisé avec des sous-domaines bénéficiant ainsi de l’effet cumulé du domain sharding.

Quand-faut il l’utiliser ?

La mise en place d’un service de CDN est recommandée pour les sites possédant une audience internationale. Dans le cas d’un site français hébergé en France et avec une audience franco-française l’utilisation d’un CDN est très discutable. D’autant plus que les prix de ces services ne sont pas négligeables.

En conclusion

Désormais, vous avez toutes les informations nécessaires pour ne plus confondre ces deux techniques qui sont très différentes.

Le domain sharding n’est qu’une répartition des ressources entre domaines pour s’affranchir des limites des navigateurs alors que le CDN est l’hébergement de nos ressources sur des serveurs répartis autour du monde.

L’utilisation d’un CDN et/ou du domain sharding est à adopter en fonction de votre projet et de vos ressources financières.

Sur WordPress, il sera bientôt possible de mettre en place ces techniques avec votre plugin de cache favori.

À propos de

WP Rocket cofounder, I love Startups, Coffee, Italian Food and Python (not necessary in that order).

S’abonner à notre newsletter Les dernières actus de la fusée, à la vitesse de la lumière !

8 commentaires

Commenter

Super pour cette précision, je sais que c’est une mise au point que vous attendiez impatiemment 😉

Du coup, j’en apprends même l’obsolescence programmée du Domain Sharding. Est-ce qu’aujourd’hui (et avec le futur qui s’annonce) vous recommanderiez quand même que l’on place les médias en sous-domaine ou pas ?

Salut Nicolas,
Oui à condition que tu ai suffisamment de fichiers media justifiant une requête DNS supplémentaire. C’est à tester, c’est vraiment au cas par cas.

Super la mise au point, j’ai juste une question, le dns prefetch ne peut justement pas résoudre ce problème de requête DNS supplémentaire avec le Domain Sharding ?

Ce blog est vraiment très intéressant… et les dernières lignes me mettent déjà l’eau à la bouche. Merci d’avoir éclairer ma lanterne à ce sujet !

@Florian
Le DNS prefectch s’effectue une fois qu’on est sur le site pour la navigation à venir. Par exemple si sur une page suivante on sait qu’on doit faire appel à une requête DNS.
D’ailleurs Chrome le gère désormais tout seul sans cet attribut.

Bonjour et mille mercis pour ces précisions ;

J’ai un hébergement 1&1 avec CDN… Ayant pas mal de requêtes DNS sur mon site electricnews.fr, le Domain Sharding pourrait donc être une solution supplémentaire pour optimiser le chargement des ressources statiques. Si je comprends bien, il suffit de copier les ressources statiques dans 1 ou plusieurs sous répertoires, et d’en indiquer à wordpress le chemin.

Puis je utiliser l’option CDN de wp-rocket pour faire du Domain Sharding ? C’est à dire indiquer une url sur le mm serveur dans un sous-dossier pour certains type de fichier ? Cela poserait-il un problème avec le CDN de 1&1 ?

Merci de vos réponses, et surtout bravo pour wp-rocket ! 😉

@valery: Oui, vous pouvez utiliser le CDN de 1&1 avec notre option. Il vous suffit de définir vos CNAMEs chez 1&1 et de les indiquer dans l’option CDN de WP Rocket.

En France, c’est d’autant plus discutable, que l’infrastructure du CDN, peut être moins performante que celle de l’hébergeur. Par exemple, chez Gandi (mon hébergeur), mon site bénéficie d’un Varnish cache qui délivre les fichiers très rapidement, en tout cas beaucoup plus vite que mon fournisseur de CDN, du moins en France. Comme indiqué dans l’article, le gros avantage est la parallélisation des requêtes.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs requis sont indiqués par des *