Middle
Quelle est la différence entre les protocoles HTTP/1 et HTTP/2?
sobes.tech IA
Réponse de l'IA
Les principales différences entre HTTP/1.1 et HTTP/2 :
-
Multiplexage :
- HTTP/1.1 : Traitement séquentiel des requêtes sur une seule connexion. Plusieurs connexions TCP étaient nécessaires pour le chargement parallèle.
- HTTP/2 : Multiplexage sur une seule connexion TCP. Permet d’envoyer plusieurs requêtes et de recevoir des réponses simultanément, sans se bloquer mutuellement.
-
Compression des en-têtes (HPACK) :
- HTTP/1.1 : Les en-têtes sont transmis sans compression, ce qui peut être redondant avec de nombreuses requêtes.
- HTTP/2 : Compression des en-têtes utilisant l’algorithme HPACK. Réduit la taille des données transmises.
-
Priorisation des flux :
- HTTP/1.1 : Absence de priorisation.
- HTTP/2 : Le client peut attribuer des priorités à différents flux de données, influençant leur ordre de traitement par le serveur.
-
Push du serveur (Server Push) :
- HTTP/1.1 : Le client doit demander explicitement chaque ressource (CSS, JS, images).
- HTTP/2 : Le serveur peut envoyer à l’avance des ressources qu’il estime nécessaires pour l’affichage de la page, avant que le client ne les demande.
-
Protocole binaire :
- HTTP/1.1 : Protocole textuel, relativement facile à lire.
- HTTP/2 : Protocole binaire, plus efficace pour l’analyse et la transmission.
Tableau comparatif :
| Caractéristique | HTTP/1.1 | HTTP/2 |
|---|---|---|
| Multiplexage | Non (plusieurs TCP) | Oui (un TCP) |
| Compression des en-têtes | Non | Oui (HPACK) |
| Priorisation des flux | Non | Oui |
| Push du serveur | Non | Oui |
| Format du protocole | Textuel | Binaire |
| Problème de Head-of-Line Blocking | Présent (pour un TCP) | Réduit grâce au multiplexage |
Exemple de multiplexage (conceptuel) :
// HTTP/1.1 : Requêtes séquentielles
fetch('/resource1')
.then(() => fetch('/resource2'))
.then(() => fetch('/resource3'));
// HTTP/2 : Requêtes parallèles sur une seule connexion
// Dans le navigateur, cela se produit automatiquement pour HTTP/2
// Conceptuellement, les requêtes peuvent être envoyées presque simultanément