Vai al contenuto
BeoHosting
BeoHosting
Technical

Cosa sono HTTP/2 e HTTP/3 e perché sono importanti

BeoHosting Team··10 min read di lettura
Cosa sono HTTP/2 e HTTP/3 e perché sono importanti

L'evoluzione del protocollo HTTP

HTTP, ovvero Hypertext Transfer Protocol, è il fondamento della comunicazione web. Comprendere il protocollo è importante per scegliere l'hosting giusto. Ogni volta che apri una pagina web, il tuo browser invia una richiesta HTTP al server, che risponde con il contenuto richiesto. HTTP/1.1, introdotto nel 1997, ha servito il web per quasi due decenni, ma con la crescente complessità dei siti moderni i suoi limiti sono diventati sempre più evidenti. I siti odierni caricano in media da 70 a 100 risorse per pagina, tra cui HTML, CSS, JavaScript, immagini e font, e HTTP/1.1 non era stato progettato per una comunicazione così intensa.

HTTP/2 è stato rilasciato nel 2015 in risposta a questi limiti, introducendo cambiamenti rivoluzionari nel modo in cui browser e server comunicano. HTTP/3, introdotto nel 2022, fa un ulteriore passo avanti sostituendo il protocollo TCP con QUIC per connessioni ancora più veloci e affidabili. Comprendere questi protocolli è importante per chiunque lavori nello sviluppo web o nell'hosting, perché influenzano direttamente la velocità e le prestazioni del sito.

HTTP/1.1 e i suoi limiti

Come funziona HTTP/1.1

HTTP/1.1 usa un formato testuale per le intestazioni di richiesta e risposta e funziona secondo il principio richiesta-risposta. Il browser invia una richiesta per una risorsa, attende la risposta e poi invia la richiesta successiva. Questo è noto come problema del head-of-line blocking, in cui una richiesta lenta blocca tutte le altre richieste in coda. Per aggirare questo limite, i browser aprono più connessioni TCP parallele verso lo stesso server, in genere da 6 a 8 connessioni, ma ogni connessione richiede un handshake TCP separato e una negoziazione TLS che consumano tempo e risorse.

Soluzioni alternative per HTTP/1.1

Per anni gli sviluppatori web hanno usato vari trucchi per aggirare i limiti di HTTP/1.1. Il domain sharding è una tecnica in cui le risorse vengono distribuite su più sottodomini, così che il browser possa aprire più connessioni parallele. Gli sprite CSS combinano molte piccole icone in un'unica immagine grande per ridurre il numero di richieste. La concatenazione unisce più file JavaScript o CSS in un unico file di grandi dimensioni. L'inlining incorpora piccoli blocchi di CSS o JavaScript direttamente nell'HTML. Tutte queste tecniche complicano lo sviluppo e la manutenzione del sito e diventano superflue con HTTP/2.

La rivoluzione di HTTP/2

Multiplexing

L'innovazione più importante del protocollo HTTP/2 è il multiplexing, che consente di inviare più richieste e risposte contemporaneamente su un'unica connessione TCP. Invece di attendere una risposta prima di inviare la richiesta successiva, il browser può inviare tutte le richieste in una volta e il server risponde non appena ha i dati pronti. Questo elimina l'head-of-line blocking a livello applicativo e accelera drasticamente il caricamento delle pagine con molte risorse. Un'unica connessione sostituisce la necessità di 6-8 connessioni parallele, risparmiando memoria e tempo di elaborazione su entrambi i lati.

Compressione delle intestazioni con HPACK

HTTP/1.1 invia le intestazioni come testo non compresso a ogni richiesta. Le intestazioni dei cookie possono pesare diversi kilobyte e vengono inviate a ogni richiesta verso lo stesso server. HTTP/2 usa l'algoritmo HPACK per la compressione delle intestazioni, che mantiene una tabella delle intestazioni inviate in precedenza e invia soltanto le differenze. Questo riduce la dimensione delle intestazioni dell'85-95 percento, un risparmio particolarmente significativo per i siti con cookie di grandi dimensioni o con molte intestazioni personalizzate.

Server Push

La funzionalità Server Push permette al server di inviare in modo proattivo le risorse al browser prima che questo le richieda esplicitamente. Per esempio, quando il browser richiede una pagina HTML, il server può inviare immediatamente i file CSS e JavaScript che sa essere necessari. Questo elimina il ritardo tra l'analisi dell'HTML e l'invio delle richieste per le risorse correlate. Nella pratica, il Server Push va usato con attenzione, perché un push troppo aggressivo delle risorse può consumare banda per risorse che il browser ha già in cache.

Formato binario

HTTP/2 usa un formato binario invece del formato testuale di HTTP/1.1. Il formato binario è più efficiente nell'analisi, perché i computer lavorano naturalmente con i dati binari, più resistente agli errori, perché ha una struttura a frame chiaramente definita, e più compatto, perché non spreca byte in delimitatori testuali e spazi vuoti. Ogni messaggio HTTP/2 è suddiviso in frame che appartengono a uno stream specifico, e più stream vengono multiplati su un'unica connessione.

Prioritizzazione degli stream

HTTP/2 consente al browser di assegnare una priorità a ogni richiesta. I file CSS che bloccano il rendering della pagina possono ottenere una priorità più alta rispetto alle immagini che si caricano sotto la piega. Il server usa queste priorità per decidere l'ordine in cui inviare i dati quando la banda non riesce a soddisfare tutte le richieste contemporaneamente. Il risultato è una visualizzazione più rapida del contenuto visibile della pagina, anche mentre tutte le risorse sono ancora in fase di caricamento.

HTTP/3 e il protocollo QUIC

Il problema del TCP

Sebbene HTTP/2 risolva molti problemi a livello applicativo, usa ancora il TCP per il trasporto. Il TCP ha un proprio problema di head-of-line blocking, perché se un pacchetto va perso, tutti i pacchetti che lo seguono devono attendere finché il pacchetto perso non viene reinviato e ricevuto. In HTTP/2, dove tutti gli stream condividono un'unica connessione TCP, la perdita di un pacchetto blocca tutti gli stream, anche quelli i cui pacchetti sono arrivati correttamente. Su reti instabili come quelle mobili o WiFi questo può rappresentare un problema significativo.

Il protocollo QUIC

HTTP/3 sostituisce il TCP con il protocollo QUIC, sviluppato da Google, che funziona su UDP. QUIC implementa una consegna affidabile dei dati in modo indipendente per ogni stream, il che significa che la perdita di pacchetti in uno stream non blocca gli altri stream. QUIC integra inoltre la crittografia TLS 1.3 direttamente nel protocollo di trasporto, eliminando la necessità di un handshake TLS separato. Il risultato è uno stabilimento più rapido della connessione, perché l'handshake QUIC combina i parametri di trasporto e crittografici in un unico passaggio.

Connessione Zero Round Trip

QUIC supporta lo stabilimento della connessione 0-RTT (Zero Round Trip Time) per le visite ripetute. Quando l'utente torna su un sito già visitato in precedenza, QUIC può iniziare a inviare dati immediatamente senza alcun handshake, usando i parametri crittografici della sessione precedente. Questo è particolarmente significativo per gli utenti mobili, che spesso passano tra reti WiFi e mobili, perché la connessione QUIC sopravvive a un cambio di indirizzo IP grazie al Connection ID invece dell'identificazione tramite indirizzo IP e porta.

Migrazione della connessione

Una connessione TCP è definita da una coppia di indirizzi IP e porte, il che significa che la connessione si interrompe quando l'indirizzo IP cambia. Quando un utente mobile passa dal WiFi alla rete mobile, tutte le connessioni TCP si interrompono e devono essere ristabilite. QUIC usa il Connection ID per l'identificazione della connessione invece dell'indirizzo IP, il che consente una migrazione fluida tra reti senza interruzione del trasferimento dati. L'utente non si accorge della transizione e il sito continua a caricarsi senza interruzioni.

Le prestazioni nella pratica

Misurazioni della velocità

Nella pratica HTTP/2 porta un miglioramento della velocità di caricamento dal 15 al 50 percento rispetto a HTTP/1.1, a seconda della complessità del sito. I siti con molte piccole risorse ne traggono il maggior beneficio, perché il multiplexing elimina l'overhead dovuto all'apertura di più connessioni. HTTP/3 porta un ulteriore miglioramento del 5-15 percento in condizioni ideali, ma su reti instabili con frequente perdita di pacchetti il miglioramento può essere del 30 percento o più, grazie all'eliminazione dell'head-of-line blocking a livello di trasporto.

Impatto sui Core Web Vitals

HTTP/2 e HTTP/3 migliorano direttamente le metriche Core Web Vitals che Google usa per il ranking. Controlla le prestazioni del tuo sito. Il Largest Contentful Paint migliora perché le risorse si caricano più velocemente in parallelo. Il First Input Delay diminuisce perché il JavaScript viene scaricato ed eseguito più rapidamente. Il Cumulative Layout Shift migliora perché font e immagini si caricano più velocemente, riducendo gli spostamenti dei contenuti. Il Time to First Byte migliora con HTTP/3 grazie a uno stabilimento più rapido della connessione.

Come abilitare HTTP/2 e HTTP/3

Supporto lato server

HTTP/2 richiede una connessione HTTPS (un certificato TLS valido), perché tutti i browser moderni supportano HTTP/2 solo su TLS. La maggior parte dei web server moderni, tra cui Nginx, Apache e LiteSpeed, supporta HTTP/2 con una configurazione semplice. Per Nginx è sufficiente aggiungere il parametro http2 nella direttiva listen. Apache richiede l'abilitazione del modulo mod_http2. HTTP/3 richiede il supporto del protocollo QUIC, attualmente offerto da Nginx con il modulo quic, LiteSpeed, Cloudflare e altri provider CDN.

Verifica del protocollo

Puoi verificare quale protocollo HTTP usa il tuo sito tramite Chrome DevTools. Apri la scheda Network, fai clic con il tasto destro sull'intestazione della colonna, aggiungi la colonna Protocol e ricarica la pagina. Vedrai h2 per HTTP/2 o h3 per HTTP/3 accanto a ogni richiesta. Strumenti online come KeyCDN HTTP/2 Test e HTTP/3 Check consentono una verifica rapida senza installare programmi.

Conclusione

HTTP/2 e HTTP/3 sono miglioramenti significativi che portano un caricamento più rapido del sito, una migliore esperienza utente e un migliore posizionamento su Google. Il multiplexing, la compressione delle intestazioni e il server push di HTTP/2 eliminano molti limiti del vecchio protocollo HTTP/1.1. HTTP/3 con il protocollo QUIC risolve i problemi di perdita di pacchetti e di migrazione della connessione, particolarmente utili per gli utenti mobili. Su BeoHosting tutti i piani di hosting supportano HTTP/2 e i nostri piani avanzati includono anche il supporto HTTP/3 per le massime prestazioni del sito.

BeoHosting Team

10+ anni di esperienza — Specialisti di web hosting e infrastrutture

  • Web Hosting
  • WordPress Hosting
  • VPS
  • Dedicated Serveri
  • Domeni
  • SSL
  • cPanel
  • LiteSpeed
  • Linux administracija
  • DNS

Ultimo aggiornamento: