Cos'è HTTP/2?
HTTP/2 è una revisione importante del protocollo HTTP (standardizzato come RFC 7540) che introduce l'inquadratura binaria, il multiplexing, la compressione dell'intestazione e la spinta del server per migliorare notevolmente le prestazioni del web su HTTP/1.1.HTTP/2 vs HTTP/1.1
| Caratteristica | HTTP/1.1 | HTTP/2 |
|---|---|---|
| Formato | Basato sul testo | Binary |
| Collegamenti | Multiple (6-8 per host) | Multisala singola |
| Richiesta di trattamento | Sequenziale | Flussi paralleli |
| Compressione della testa | Nessuno | compressione HPACK |
| Spinta del server | Non disponibile | Supportato |
| Priorizzazione | Nessuno | Priorità del flusso |
Come funziona 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
Caratteristiche chiave
Binary Framing Layer
HTTP/2 Frame Structure:
┌─────────────────────────────────────┐
│ Length (24 bits) │
├─────────────────────────────────────┤
│ Type (8 bits) │ Flags (8 bits) │
├─────────────────────────────────────┤
│ Stream Identifier (32 bits) │
├─────────────────────────────────────┤
│ Frame Payload (variable) │
└─────────────────────────────────────┘
Compressione dell'intestazione HPACK
| Scenario | HTTP/1.1 Intestazioni | HTTP/2 Intestazioni |
|---|---|---|
| Prima richiesta | - 800 byte | - 800 byte |
| Richieste successive | ~ 800 byte ciascuno | ~20-50 byte (indicizzato) |
Prioritizzazione del flusso
Priority Tree:
Root (connection)
├── CSS (weight: 256, high priority)
├── JavaScript (weight: 220)
└── Images (weight: 110, lower priority)
Requisiti del server
| Server | Supporto HTTP/2 |
|---|---|
| No. | 1.9.5+ |
| Apache | 2.4.17+ (mod http2) |
| Node.js | 8.4+ (nativo) |
| IIS | Windows 10/Server 2016+ |
Prestazioni Vantaggi
- Latenza ridotta Singola connessione elimina TCP handshake overhead
- Compressione migliore: riduzione della dimensione dell'intestazione 85-90% sulle richieste di ripetizione
- # Parallel load # Tutte le risorse caricano simultaneamente
- ♪Server push ♪ Proattivamente inviare risorse prima che il browser li richiede
Migliori Pratiche
1. Enable TLS: HTTP/2 praticamente richiede HTTPS (i browser lo fanno rispettare)
2. Ridurre il dominio sharding: I domini multipli ora danneggiano le prestazioni
3. Stop concatenating files: Multiplexing rende il bundling meno necessario
4. Utilizzare il server con attenzione: Spingere solo risorse critiche
5. Prestazioni motori: Verifica HTTP/2 migliora il tuo caso di utilizzo specifico
HTTP/2 offre miglioramenti significativi delle prestazioni per la maggior parte dei siti web attraverso un uso più efficiente delle connessioni di rete.