HTTP/2, initialement nommé HTTP/2.0, est la dernière version du protocole HTTP. Par rapport à HTTP/1.1, HTTP/2 prend en charge davantage de fonctionnalités, notamment le multiplexage, la compression des en-têtes, la priorisation des requêtes et le push serveur. HTTP/2 offre des performances optimisées tout en restant compatible avec la sémantique HTTP/1.1. Les principaux navigateurs tels que Google Chrome, Microsoft Edge, Safari et Mozilla Firefox prennent en charge HTTP/2.
Avantages de HTTP/2 :
Encodage binaire : contrairement au protocole HTTP/1.x qui repose sur du texte brut délimité par des sauts de ligne, toutes les communications HTTP/2 sont découpées en messages et trames plus petits, chacun étant encodé au format binaire. Ce mécanisme d'encodage binaire rend HTTP/2 plus extensible. Par exemple, des trames sont introduites pour transmettre des données et des instructions.
Multiplexage : HTTP 1.x nécessite l'utilisation de sprites et de multiples noms de domaine pour améliorer les performances, car les navigateurs limitent le nombre de requêtes vers un même nom de domaine. Lorsqu'un grand nombre de ressources d'une page sont demandées par les clients, un blocage de tête de ligne (blocage HOL) peut survenir. Si le nombre de requêtes atteint la limite supérieure, celles-ci doivent patienter dans une file d'attente, car une seule requête peut être traitée à la fois par connexion. HTTP/2 constitue une nouvelle couche de tramage permettant la transmission de flux bidirectionnels (requêtes et réponses) sur une même connexion TCP. Chaque flux possède un identifiant unique et des en-têtes spécifiques servant à l'encapsuler entre le client et le serveur. Ce mécanisme élimine le blocage HOL et améliore les performances de transmission.
Compression des en-têtes : chaque message HTTP transporte de nombreux en-têtes décrivant la ressource transférée et ses propriétés. Afin de réduire la surcharge, HTTP/2 utilise la compression HPACK. Le protocole exige que le client et le serveur maintiennent et mettent à jour une liste indexée des champs d'en-tête. Cette liste sert de référence pour encoder les valeurs précédemment transmises en transférant uniquement leurs index. Cela améliore l'efficacité de la transmission des données ainsi que les performances globales.
Push serveur : cette fonctionnalité permet à un serveur d'envoyer plusieurs réponses à un seul client. Outre la réponse à la requête initiale, le serveur peut pousser des ressources supplémentaires vers le client de manière proactive.