Qu'est-ce que HTTP/2 ?
HTTP/2 est une révision majeure du protocole HTTP (standardisé comme RFC 7540) qui introduit le cadrage binaire, le multiplexage, la compression d'en-tête et la poussée du serveur pour améliorer considérablement les performances web sur HTTP/1.1.HTTP/2 vs HTTP/1.1
| Fonctionnalité | HTTP/1.1 | HTTP/2 |
|---|---|---|
| Format | Texte | Binaire |
| Connexions | Multiple (6-8 par hôte) | Multiplexé unique |
| Demande de traitement | Séquentiel | Flux parallèles |
| Compression des en-têtes | Aucune | Compression HPACK |
| Pousser le serveur | Non disponible | Appui |
| Établissement des priorités | Aucune | Priorités du volet |
Comment HTTP/2 fonctionne
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
Caractéristiques principales
Couche de framing binaire
HTTP/2 Frame Structure:
┌─────────────────────────────────────┐
│ Length (24 bits) │
├─────────────────────────────────────┤
│ Type (8 bits) │ Flags (8 bits) │
├─────────────────────────────────────┤
│ Stream Identifier (32 bits) │
├─────────────────────────────────────┤
│ Frame Payload (variable) │
└─────────────────────────────────────┘
Compression de l'en-tête HPACK
| Scénario | HTTP/1.1 En-têtes | En-têtes HTTP/2 |
|---|---|---|
| Première demande | ~800 octets | ~800 octets |
| Demandes ultérieures | ~800 octets chacun | ~20-50 octets (indexés) |
Priorité des volets
Priority Tree:
Root (connection)
├── CSS (weight: 256, high priority)
├── JavaScript (weight: 220)
└── Images (weight: 110, lower priority)
Exigences du serveur
| Serveur | Prise en charge HTTP/2 |
|---|---|
| nginx | 1,9.5+ |
| Apache | 2.4.17+ (mod http2) |
| Node.js | 8,4+ (natif) |
| IIES | Windows 10/Serveur 2016+ |
Avantages
- Latence réduite: Une seule connexion élimine la poignée de main TCP
- Better compression: réduction de la taille de l'en-tête de 85-90% sur les demandes répétées
- Chargement parallèle: Toutes les ressources chargent simultanément
- Propulseur de serveur: Envoyer les ressources de manière proactive avant que le navigateur les demande
Meilleures pratiques
1. Activer TLS: HTTP/2 nécessite pratiquement HTTPS (les navigateurs l'exécutent)
2. Reduce domaine sharding: Plusieurs domaines nuisent maintenant aux performances
3. Arrêter les fichiers de concaténation: Le multiplexage rend le groupement moins nécessaire
4. Utilisez le serveur avec précaution: Pousser uniquement les ressources essentielles
5. Performance du moniteur: Vérifier HTTP/2 améliore votre cas d'utilisation spécifique
HTTP/2 apporte des améliorations importantes aux performances de la plupart des sites Web grâce à une utilisation plus efficace des connexions réseau.