Table des matières
Mis à jour le
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):
- http://calendar.perfplanet.com/2013/reducing-domain-sharding/
- http://www.mobify.com/blog/domain-sharding-bad-news-mobile-performance/
- http://blog.cloudflare.com/what-makes-spdy-speedy
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.