Le protocole HTTP / 2

Une description détaillée du fonctionnement du protocole HTTP / 2

Je suggère de lire leTutoriel HTTPpremière

HTTP / 2 est la version actuelle du protocole HTTP. Sorti en 2015 par le comité IETF (Internet Engineering Task Force), il est désormais largement adopté grâce à ses fonctionnalités uniques.

HTTP / 2 est bien plus performant que HTTP / 1.1, la dernière version de HTTP disponible à l'époque.

Le ralentisseur proposé par HTTP / 2 était si attrayant qu'il a été très rapidement adopté - avec un simple changement dans le serveur Web (puisque HTTP / 2 est 100% rétrocompatible avec HTTP / 1.1), vos sites Web et applications Web fonctionnent maintenant beaucoup plus rapidement automatiquement, ce qui à son tour est bénéfique pour vos utilisateurs et également à des fins de référencement (car la vitesse est un facteur crucial pour le classement).

Comment HTTP / 2 peut-il être beaucoup plus rapide que HTTP / 1.1? Les raisons sont nombreuses, toutes orientées vers la réduction des inefficacités de la version précédente et l'introduction de fonctionnalités qui peuvent permettre aux navigateurs d'être plus capables de servir les ressources plus rapidement.

Les principales caractéristiques de la nouvelle version du protocole sont:

  • multiplexage des demandes et des réponses
  • compression efficace des en-têtes HTTP
  • serveur push
  • communication binaire

Multiplexage

Avant HTTP / 2, une seule réponse pouvait être servie à la fois pour chaque connexion TCP.

TCP est le protocole sous-jacent sur lequel HTTP est construit. TCP reste au niveau de la couche de transport, tandis que HTTP au niveau de l'application.

Le multiplexage demande / réponse activé par HTTP / 2 au-dessus d'une seule connexion TCP, permettant au serveur de traiter plusieurs demandes avec la même connexion, ce qui se traduit par une communication beaucoup plus rapide.

C'est le seul changement qui sera un grand avantage pour votre application, et rend plusieurs techniques d'optimisation obsolètes, y compris les sprites d'image (qui sont utilisés pour combiner plusieurs images en une seule, qui est ensuite «démultiplexée» en utilisant une technique CSS spéciale ) et le partage de domaine, un autre hack utilisé pour empêcher le navigateur de limiter le nombre de connexions simultanées au même domaine.

Compression des en-têtes

Les en-têtes HTTP sur les pages et les ressources peuvent devenir assez volumineux, compte tenu d'une utilisation normale des cookies et d'autres valeurs d'en-tête. La compression permet à HTTP d'avoir une empreinte plus légère, réduisant la quantité de données échangées entre le client et le serveur.

Serveur push

Le serveur push est une fonctionnalité qui permet d'envoyer plusieurs réponses à une seule demande. Puisque le serveur sait que lorsqu'il demande une ressource, un client demandera alors d'autres ressources complémentaires (pensez CSS, JS, images liées à une page), un serveur peut décider de les envoyer immédiatement.

Au lieu d'envoyer le code HTML, d'attendre que le navigateur le parse et lance d'autres requêtes pour obtenir les ressources, le serveur peut les pousser complètement.

Un serveur peut également décider d'envoyer des ressources qui pourraient être nécessaires dans de futures demandes, en préoptimisant le prochain chargement de la page et en le plaçant dans le cache client.

Notez que le serveur push peut également avoir ses propres inconvénients - par exemple, vous pouvez risquer d'envoyer trop de données au client qui pourraient ne pas être nécessaires (peut-être sont-elles déjà disponibles sur le client en cache), alors utilisez avec prudence

Communication binaire

HTTP / 1.1 utilisait une communication textuelle. HTTP / 2 utilise la communication binaire, qui présente quelques avantages, notamment une analyse plus efficace, moins sujette aux erreurs et également plus compacte.

Quelle est l'évolution pour le futur?

HTTP/3est en cours de développement et sera adapté deHTTP sur QUIC, un projet expérimental.

QUIC est un protocole basé sur UDP (plutôt que TCP) au niveau de la couche de transport, ce qui signifie que HTTP / 3 sera basé sur une pile technologique complètement différente de HTTP / 2 et HTTP / 1.x.


Plus de didacticiels réseau: