Qu’est-ce que HTTP/2 ?
HTTP/2 est une révision majeure du protocole HTTP, normalisée par la RFC 7540, qui introduit le cadrage binaire, le multiplexage, la compression des en-têtes et le server push afin d’améliorer fortement les performances web par rapport à HTTP/1.1.HTTP/2 par rapport à HTTP/1.1
| Fonctionnalité | HTTP/1.1 | HTTP/2 |
|---|---|---|
| Format | Fondé sur le texte | Binaire |
| Connexions | Multiples (6 à 8 par hôte) | Une seule, multiplexée |
| Traitement des requêtes | Séquentiel | Flux parallèles |
| Compression des en-têtes | Aucune | Compression HPACK |
| Server push | Non disponible | Prise en charge |
| Priorisation | Aucune | Priorités des flux |
Fonctionnement de HTTP/2
HTTP/1.1 (Head-of-Line Blocking):
Connection 1: Request A ──────────► Response A
Connection 2: Request B ──────────► Response B
Connection 3: Request C ──────────► Response C
(Multiple connections, sequential per connection)
HTTP/2 (Multiplexing):
Single Connection:
├── Stream 1: Request A ──► Response A
├── Stream 2: Request B ──► Response B
├── Stream 3: Request C ──► Response C
└── All interleaved on same connection
Fonctionnalités clés
Couche de cadrage binaire
HTTP/2 Frame Structure:
┌─────────────────────────────────────┐
│ Length (24 bits) │
├─────────────────────────────────────┤
│ Type (8 bits) │ Flags (8 bits) │
├─────────────────────────────────────┤
│ Stream Identifier (32 bits) │
├─────────────────────────────────────┤
│ Frame Payload (variable) │
└─────────────────────────────────────┘
Compression des en-têtes HPACK
| Scénario | En-têtes HTTP/1.1 | En-têtes HTTP/2 |
|---|---|---|
| Première requête | ~800 octets | ~800 octets |
| Requêtes suivantes | ~800 octets chacune | ~20 à 50 octets (indexés) |
Priorisation des flux
Priority Tree:
Root (connection)
├── CSS (weight: 256, high priority)
├── JavaScript (weight: 220)
└── Images (weight: 110, lower priority)
Exigences serveur
| Serveur | Prise en charge HTTP/2 |
|---|---|
| nginx | 1.9.5+ |
| Apache | 2.4.17+ (mod_http2) |
| Node.js | 8.4+ (native) |
| IIS | Windows 10/Server 2016+ |
Avantages en matière de performances
- Latence réduite : une seule connexion élimine le coût de l’établissement TCP
- Meilleure compression : réduction de 85 à 90 % de la taille des en-têtes lors des requêtes répétées
- Chargement parallèle : toutes les ressources se chargent simultanément
- Server push : envoi proactif des ressources avant leur demande par le navigateur
Bonnes pratiques
1. Activer TLS : HTTP/2 nécessite pratiquement HTTPS (les navigateurs l’imposent)
2. Réduire le domain sharding : plusieurs domaines nuisent désormais aux performances
3. Cesser de concaténer les fichiers : le multiplexage rend le regroupement moins nécessaire
4. Utiliser le server push avec prudence : pousser uniquement les ressources critiques
5. Surveiller les performances : vérifier que HTTP/2 améliore votre cas d’utilisation précis
HTTP/2 apporte des améliorations de performances importantes à la plupart des sites grâce à une utilisation plus efficace des connexions réseau.