Publié le 31 janvier 2017
  • Avancé
  • Protocole

HTTP/1, l’ancêtre du HTTP/2

Le web s’est complètement transformé en 20 ans. Et pourtant sa brique de base n’a pratiquement pas changé. Conçu en 1997, le protocole HTTP/1 n’a depuis connu que des évolutions très mineures. Il est encore majoritairement utilisé tel quel en 2017. Si nous vous proposons aujourd’hui un article pour vous présenter ce vieillard, c’est pour vous annoncer sa mise à la retraite et son remplacement par un petit jeunot.

HTTP/1, c’était bien…

… en 1997.

Petit retour en arrière. Quand le protocole HTTP/1.1 est conçu, Google n’existe pas, Roger Federer n’est pas encore tennisman professionnel, Clinton est candidat à la Maison Blanche (Bill, pas Hillary). Et il vous faut 5 minutes de marche pour trouver une borne et appeler avec votre be-bop.

Bien sûr, le web de l’époque est loin de ressembler à ce qu’il est aujourd’hui. Une page web contient une dizaine d’images. Il n’y a pas de JavaScript. Les CSS n’existent pas – le design bon goût non plus d’ailleurs

Le-web-en-1997_blog-JETPULP

Les réseaux sociaux, les analytics, les tags d’affiliation, les ads, on oublie. Tous ces business restent à inventer.

Puis 2006 est arrivée. Avec l’avènement du Web 2.0, nos pages web se sont complexifiées, sont devenues interactives, et se sont beaucoup alourdies. Plus de composants, des appels à des services tiers, du chargement progressif, une masse de JavaScript,… Le protocole HTTP atteint ses limites. La bande passante est mal utilisée. L’affichage d’une page demande de plus en plus de ressources pour le navigateur et pour le serveur. Et la maintenance du site est de plus en plus complexe.

Bref tout cela coûte plus cher. Mais pourtant HTTP/1.1 n’évolue pas.

Entre gros mots…

Pour arriver à maintenir un niveau de performance juste acceptable, les développeurs web ont dû déployer des trésors d’inventivité et contourner les limites de HTTP/1.1.

Un navigateur ne peut ouvrir que 5 connexions en même temps à un serveur ? On invente le Domain sharding pour servir les ressources d’un même site depuis plusieurs noms de domaine.

Trop de composants dans la page ? Voici la minification et les image sprites, qui permettent d’agglomérer des informations de même type et de charger une dizaine ou centaine de composants en une seule fois, au prix d’une grande complexité pour le concepteur de la page.

La latence réseau est importante ? On installe des systèmes de cache à tous les niveaux. On externalise une partie du service sur des CDN. Et on essaie laborieusement de réduire le volume échangé en supprimant les cookies pour les images.

En résumé, toutes les bonnes pratiques préconisées par GTmetrix sont uniquement là pour compenser les limites de HTTP/1.1

http1-vs-http2_blog-jetpulp-illustration1

… Et excès de politesse !

Techniquement, le chargement d’une page web ressemble un peu à une conversation avec le Chapelier Fou d’Alice au Pays des Merveilles.

– Bonjour. Je m’appelle Alice. Je parle français et anglais. Je suis envoyée par un lapin blanc. J’utilise une tasse. Pouvez-vous me servir un thé ?
– Bonjour. Je suis le Chapelier Fou. Je parle français, anglais et italien. Voici votre thé.
– Bonjour. Je m’appelle Alice. Je parle français et anglais. Je suis envoyée par un lapin blanc. Je suis en train de prendre le thé. J’utilise une tasse. Pouvez-vous me passer le sucre ?
– Bonjour. Je suis le Chapelier Fou. Je parle français, anglais et italien. Voilà le sucre.
– Bonjour. Je m’appelle Alice. Je parle français et anglais. Je suis envoyée par un lapin blanc. Je suis en train de prendre le thé. J’utilise une tasse. Pouvez-vous me passer la cuillère ?
[…]
– Bonjour. Je m’appelle Alice. Je parle français et anglais. Je suis envoyée par un lapin blanc. Je suis en train de prendre le thé. J’utilise une tasse. Pouvez-vous me passer un
gâteau ?
– Bonjour. Je suis le Chapelier Fou. Je parle français, anglais et italien. Voilà votre gâteau.

… Et cet échange de politesses a lieu entre 100 et 200 fois par chargement de page.

http1-vs-http2_blog-jetpulp-illustration2

Dans la vraie vie, on se présente une fois et ça suffit.

En HTTP/1.1, votre navigateur et le serveur passent une bonne partie de leur temps à se redonner des informations (headers, cookies, …) qu’ils ont déjà échangée, parce que le protocole est amnésique (stateless pour faire savant). Et pour faire bonne mesure, cet échange déjà bien verbeux n’est pas compressé. Double peine vous dites ?

Domain sharding ? Super ! Mais dans la pratique, pour un site en HTTPS, il faut que j’achète 3 certificats au lieu d’un seul. Et ça coûte un bras (voire trois du coup).

La minification et les sprites compliquent fortement le débuggage et la mise à jour du site. Votre intégrateur web s’arrache les cheveux.

http1-vs-http2_blog-jetpulp-illustration3

Pas de panique, le HTTP/2 arrive ! Cliquez sur le bouton ci-dessous pour le découvrir !

Sylvain R.

La-qualité-une-responsabilité-collective
0 Commentaires
Répondre
Se joindre à la discussion ?
Vous êtes libre de contribuer !
Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *