Sobes.tech
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