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 de 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 en texte clair délimité par des sauts de ligne, toutes les communications HTTP/2 sont divisées en messages et frames plus petits, chacun étant encodé au format binaire. Ce mécanisme d'encodage binaire rend HTTP/2 plus extensible. Par exemple, des frames sont introduites pour transmettre les données et les instructions.
Multiplexage : HTTP 1.x nécessite l'utilisation de sprites CSS et de plusieurs noms de domaine pour améliorer les performances, car les navigateurs limitent le nombre de requêtes vers un même nom de domaine. Si un grand nombre de ressources d'une page sont demandées par les clients, un blocage de tête de ligne (HOL blocking) peut se produire. Lorsque le nombre de requêtes atteint la limite supérieure, celles-ci doivent attendre dans une file d'attente, car une seule requête peut être transmise à la fois par connexion. HTTP/2 introduit une nouvelle couche de framing, permettant la transmission de flux bidirectionnels (requêtes et réponses) sur la même connexion TCP. Chaque flux possède un identifiant unique et des en-têtes servant à encapsuler le flux entre le client et le serveur. Ce mécanisme élimine le blocage de tête de ligne et améliore les performances de transmission.
Compression des en-têtes : Chaque message HTTP transporte un grand nombre d'en-têtes décrivant la ressource transférée et ses propriétés. Pour réduire la surcharge, HTTP/2 utilise la compression HPACK. HTTP/2 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 des valeurs d'index. Cela améliore l'efficacité et les performances de la transmission des données.
Push serveur : Le push serveur permet à un serveur d'envoyer plusieurs réponses à un seul client. En plus de la réponse à la requête initiale, le serveur peut pousser des ressources supplémentaires vers le client.