Bibliothèque · Résumé et avis

High Performance Browser Networking

D'Ilya Grigorik. Ce que j'en retiens, ce que j'applique encore, et ce que je laisse de côté.

FR EN
Couverture de High Performance Browser Networking, Ilya Grigorik

High Performance Browser Networking

What every web developer should know about networking and web performance

8 /10

« Douze ans d'âge, des chiffres de 2013, et pourtant la physique n'a pas bougé : la latence commande toujours. »

  • AuteurIlya Grigorik
  • VOO'Reilly, 2013 · 400 pages
  • Lecture librehpbn.co (offert par l'auteur)
  • LangueEn anglais uniquement
  • Fiche~8 min de lecture
Notation du livre sur 5 dimensionsIdées9/10Applicable8/10Lisibilité8/10Actualité6/10Exemples9/10

Le livre qui a appris aux devs web que la latence, pas la bande passante, décide de la vitesse de leurs pages.

Pourquoi ce livre

On peut faire du web pendant des années sans jamais ouvrir un livre réseau. Le navigateur affiche la page, l'API répond, tout va bien. Et puis un jour une page traîne, on double la taille du serveur, on paie un CDN plus cher, et rien ne change. Le problème n'était pas la puissance : c'était la distance.

Ilya Grigorik, ingénieur performance web chez Google à l'époque, a écrit le livre exactement pour ça : tout ce qu'un développeur web devrait savoir sur le réseau, sans devenir admin réseau. Et il l'a mis en lecture libre sur hpbn.co, ce qui en fait le livre réseau le plus accessible jamais écrit pour notre métier.

Les idées qui restent

1La vitesse est une fonctionnalité, et elle se paie en millisecondes

« Speed is a feature. » Pas un confort : une fonctionnalité, avec des chiffres de chiffre d'affaires derrière. L'exemple le plus parlant du livre : Bing a mesuré qu'un délai artificiel de 2 000 ms faisait chuter le revenu par utilisateur de 4,3 %. Et la perception humaine a des seuils précis, que le livre pose en tableau : sous 100 ms, c'est instantané. Entre 300 et 1 000 ms, « la machine travaille ». Au-delà de 1 000 ms, l'esprit du visiteur est déjà ailleurs. La règle du pouce du livre : afficher quelque chose en moins de 250 ms.

À l'autre bout de l'échelle, la finance donne le prix exact d'une milliseconde : le câble Hibernia Express, 300 M$ de fibre posée entre New York et Londres pour gagner ~5 ms sur les liaisons existantes. 60 M$ la milliseconde.

2La bande passante ne compte (presque) plus

Le test fondateur, mené par Mike Belshe (le futur créateur de SPDY) : on fait varier la connexion et on chronomètre le chargement d'une page. Passer de 1 à 2 Mbps divise presque le temps par deux. Mais passer de 5 à 10 Mbps ne gagne que ~5 %. La courbe s'aplatit : au-delà de quelques Mbps, votre fibre n'accélère plus rien.

La latence, elle, ne s'aplatit jamais : chaque 20 ms gagnées améliorent le chargement linéairement. Pourquoi ? Parce qu'une page n'est pas UN téléchargement : c'est ~90 requêtes vers 15 hôtes (la page moyenne de 2013 : 1 311 Ko). Des dizaines de petits allers-retours, et chaque aller-retour paie la distance. « Bandwidth doesn't matter, much. » (la bande passante ne compte pas, ou si peu). C'est ce constat chiffré qui a lancé SPDY, donc HTTP/2.

Et la latence a un plancher physique : la lumière dans la fibre avance à ~200 000 km/s (l'indice de réfraction du verre la freine d'un tiers). New York-Londres : 56 ms aller-retour, incompressible. On peut toujours acheter plus de bande passante ; on ne peut pas acheter la vitesse de la lumière.

3Chaque connexion neuve paie un péage

Avant d'envoyer le premier octet utile, TCP exige un aller-retour de politesse : le handshake (SYN, SYN-ACK, ACK : « je veux parler », « d'accord, moi aussi », « alors on parle »). Puis le slow start : TCP ne connaît pas la capacité du chemin, alors il démarre prudemment (aujourd'hui 10 segments, ~14 Ko) et double à chaque aller-retour. Une connexion neuve est donc lente PAR CONSTRUCTION, quelle que soit votre fibre.

L'exemple chiffré du livre : servir 64 Ko entre New York et Londres (RTT 56 ms) prend 264 ms sur une connexion neuve, 96 ms sur une connexion réutilisée. Presque trois fois plus vite, pour le même fichier et le même réseau. La leçon opérationnelle tient en un mot : réutiliser (keepalive, pools de connexions, CDN qui terminent le TLS près de l'utilisateur).

4TLS n'est plus cher, mais il se règle

Le mythe « HTTPS, ça rame » est mort en janvier 2010, quand Gmail est passé tout-HTTPS. Adam Langley (Google) : moins de 1 % de CPU, moins de 10 Ko de mémoire par connexion, moins de 2 % de surcoût réseau. « SSL/TLS n'est plus coûteux en calcul », et l'auteur ajoute : si vous arrêtez de lire ici, retenez au moins ça.

Le vrai coût de TLS n'est pas le calcul, c'est encore et toujours les allers-retours : un handshake complet ajoute 2 RTT avant le premier octet. Tout le travail d'optimisation consiste à les raboter : reprise de session (le client et le serveur se souviennent l'un de l'autre : 1 RTT), OCSP stapling (le serveur joint la preuve de validité de son certificat au lieu de laisser le navigateur aller la chercher, ce qui coûtait jusqu'à +350 ms mesurés par Firefox). Depuis le livre, TLS 1.3 (2018) a intégré la leçon dans le protocole : 1 RTT par défaut.

5Pour la batterie, il n'existe pas de « petite requête »

Sur mobile, la puce radio est le deuxième consommateur de batterie après l'écran, et elle ne se paie pas à l'octet : elle se paie à l'allumage. Passer de veille à émission coûte ~10 joules par cycle, quel que soit le contenu. Le calcul du livre : une app qui polle son serveur toutes les minutes brûle ~600 joules par heure, environ 3 % de la batterie totale, par heure et par app, pour transporter trois fois rien. « There is no such thing as a "small request" as far as the battery is concerned. »

La parade : grouper. Précharger en une rafale puis laisser la radio dormir, plutôt que du goutte-à-goutte qui la réveille sans fin. C'est le « je charge tout d'un coup » assumé, à l'inverse du réflexe serveur.

6HTTP/1.1, l'art du contournement

HTTP/1.1 a un défaut structurel : une connexion ne sert qu'une réponse à la fois (le head-of-line blocking : la première réponse de la file bloque toutes les suivantes). Les navigateurs compensent en ouvrant 6 connexions par hôte, et les devs ont inventé toute une culture du contournement : domain sharding (éclater ses assets sur plusieurs domaines pour obtenir plus de connexions), concaténation des JS, sprites d'images, inlining. Le livre les documente en les appelant ce qu'ils sont : des pansements.

Deux chiffres pour mesurer le mal : 15 octets de JSON coûtent 352 octets d'en-têtes HTTP (96 % d'emballage), et Apple a gagné +300 % de débit dans iTunes juste en activant keepalive et pipelining (WWDC 2012). D'où la maxime la plus durable du chapitre : « The fastest request is a request not made. » (la requête la plus rapide est celle qu'on n'envoie pas).

7HTTP/2 change les règles : désapprendre est une optimisation

HTTP/2 (2015, issu de SPDY) garde la sémantique (GET, statuts, en-têtes) et change la tuyauterie : une seule connexion par origine, où toutes les requêtes et réponses voyagent découpées en trames entrelacées. Le head-of-line blocking HTTP disparaît. Mesure de Patrick McManus (Firefox) : 74 % des connexions HTTP/1 ne portent qu'UNE transaction, contre 25 % en HTTP/2.

La conséquence, et c'est l'idée la plus précieuse du livre : les contournements de l'idée 6 deviennent des ANTI-patterns. Le sharding casse la connexion unique, la concaténation casse le cache granulaire, le spriting fait retélécharger 100 icônes pour une modifiée. « The best optimization for HTTP/1.x is to deploy HTTP/2. » (la meilleure optimisation pour HTTP/1.x, c'est de déployer HTTP/2). Une optimisation peut avoir une date de péremption : ce que le protocole répare, votre outillage doit le désapprendre.

8Le temps réel se choisit, il ne se bricole pas

Pour pousser une donnée du serveur vers la page, le bricolage naturel est le polling : redemander toutes les N secondes. Le livre le chiffre : 10 000 clients qui pollent toutes les 60 secondes consomment ~1,13 Mbps en continu, même quand il n'y a RIEN à livrer. Du vide, emballé dans des en-têtes.

Les vrais outils existent, du plus simple au plus puissant : SSE (un flux texte unidirectionnel serveur→client, auto-reconnexion gratuite), WebSocket (bidirectionnel, binaire, mais on perd le cache et la compression HTTP : tout est à votre charge), WebRTC (pair-à-pair sur UDP, pour l'audio/vidéo où une image en retard est une image bonne à jeter). Le choix est un arbitrage, pas une échelle de modernité : le plus simple qui couvre le besoin gagne.

Et HTTP/3, alors ?

Le livre s'arrête à HTTP/2, mais il pointe déjà sa limite : le head-of-line blocking déplacé au niveau TCP (un paquet perdu bloque toutes les trames derrière). HTTP/3 (2022) résout exactement ça en abandonnant TCP pour QUIC, bâti sur UDP : chaque flux gère ses pertes seul. Le livre vous donne, sans le savoir, tout ce qu'il faut pour comprendre pourquoi HTTP/3 existe. Server push, en revanche, la fonctionnalité vedette du chapitre HTTP/2, a perdu : Chrome l'a retirée en 2022.

Mon avis, honnêtement

J'ai longtemps optimisé mes sites comme on frotte une lampe : minifier, concaténer, croiser les doigts. Ce livre m'a remis les pieds sur terre, littéralement : la vitesse d'une page se joue dans des allers-retours qui traversent des océans, et aucun framework ne raccourcit l'Atlantique. Ce réflexe, penser en allers-retours plutôt qu'en mégabits, est la vraie chose que le livre installe, et il survit à tous les protocoles.

Le reproche honnête : le livre a l'âge de ses chiffres. Les pages moyennes de 1,3 Mo font sourire, les chapitres 3G/4G se sautent sans remords, server push y est présenté en fonctionnalité vedette alors que Chrome l'a enterré, et HTTP/3 n'existe pas encore. L'auteur rafraîchit ponctuellement la version en ligne, mais il n'y a jamais eu de deuxième édition. Lecture en diagonale assumée, donc : les chapitres 1, 2, 4, 10 à 13 valent de l'or, le reste se garde en référence.

Reste que c'est gratuit, en ligne, offert par l'auteur : zéro excuse. Et un détail qui n'en est pas un en 2026 : les agents IA qui codent et naviguent consomment les mêmes APIs, au-dessus des mêmes RTT. La physique du réseau vaut pour eux aussi, et celui qui la comprend écrit des intégrations que la latence ne surprend pas.

Odilon

Pour qui ?

Lisez-le si

  • Vous faites du web et « RTT » reste un mot flou : c'est LE livre réseau à lire en premier, et il est gratuit
  • Vous optimisez au petit bonheur (minifier, concaténer) sans savoir ce qui compte vraiment
  • Vous faites du mobile et votre app vide les batteries
  • Vous voulez comprendre POURQUOI HTTP/2 puis HTTP/3 existent, pas juste les activer

Passez votre chemin si

  • Vous cherchez l'état de l'art 2026 (HTTP/3, WebTransport) : les fondations sont ici, pas l'actualité
  • Vous êtes déjà ingénieur réseau/perf : vous connaissez la messe
  • Vous voulez un tutoriel pas-à-pas : c'est un livre de mécanismes, pas de recettes

Pour aller plus loin

La mécanique que ce livre explique se pratique dans mes cours gratuits : tout le cycle d'une requête dans HTTP : le protocole du web, et le handshake TLS de l'idée 4, décortiqué côté attaquant, dans le cours Sécurité web.

Et quand vous commencerez à vous demander pourquoi le réseau est construit comme ça, la fiche jumelle prend le relais : Computer Networks: A Systems Approach, le manuel de référence passé en licence libre. HPBN part de vos pages et descend. Lui monte depuis les câbles.

Commentaires (0)

Voir toute la bibliothèque

D'autres fiches arrivent : un livre à la fois, la substantifique moelle seulement.