HTTP/2 – introduction

Depuis quelques temps, on entend de plus en plus parler de HTTP/2 et de comment il va résoudre nos problèmes, comment il va améliorer telle ou telle situation. Dans cette série d’articles, nous vous proposons de partir à la découverte de ce nouveau protocole et des changements qu’il apporte avec lui.

Cet article fait partie de la série HTTP/2, contenant les articles suivant :

  1. HTTP/2 : introduction
  2. HTTP/2 : les détails
  3. HTTP/2 : les anciennes pratiques à éviter maintenant
  4. HTTP/2 : l’API HTTP Client de Java 11
  5. HTTP/2 : Push serveur
  6. HTTP/2 : Push serveur avec Java EE 8

Mais c’est quoi HTTP/2 ?

Aujourd’hui encore, la majorité du trafic web mondial utilise le protocole HTTP 1.1. Seulement la spécification HTTP 1.1 date déjà de 1997 et a été conçue pour un web d’un autre temps. Voila à quoi ressemblaient les sites de Google et Apple à ce moment-là :

google-97
Apple-1997


Des pages simples, peu d’images, un style disons… « vintage ». Les sites ne proposaient que très peu d’interactivité avec l’utilisateur et tout ça se faisait au son de la douce musique d’un modem 56k.
Aujourd’hui le web a considérablement évolué, les pages sont beaucoup plus riches (et donc plus lourdes), plus dynamiques, plus complexes, responsive, … Le débit des connections a également énormément augmenté.
Un certain nombre de pratiques voire même de hacks sont donc apparus pour contourner les limitations imposées par HTTP 1.1 afin d’offrir la meilleure qualité de service possible.
En 2009, Google développe un protocole expérimental baptisé SPDY et l’IETF va complètement s’appuyer sur ce travail pour proposer HTTP/2 dont la spécification parait en 2015.

Aujourd’hui HTTP/2 est supporté par les principaux navigateurs :

http2

de même que par la plupart des serveurs HTTP et des CDN ce qui permet de favoriser son adoption. Adoption déjà réalisée par exemple pour des sites comme Google, Twitter, Wikipedia, Facebook, etc…

Intéressé(e) ? Alors embarquez avec nous et plongez dans les méandres de HTTP/2 :