HTTP/2 consente agli sviluppatori di personalizzare la definizione delle priorità o l'ordine in cui vengono caricate le risorse Web. HTTP/2 offre anche una serie di altri miglioramenti delle prestazioni rispetto ad HTTP/1.
Dopo aver letto questo articolo sarai in grado di:
Argomenti correlati
In che modo la velocità di un sito potenzia il SEO
Velocizzare un sito Web
Velocizzare il Web
Velocità e tassi di conversione
Perché è importante la velocità di un sito
Abbonati a theNET, il riepilogo mensile di Cloudflare sulle tematiche più discusse in Internet.
Copia link dell'articolo
HTTP sta per Hypertext Transfer Protocol ed è la base di quasi tutte le applicazioni Web. Più specificamente, HTTP è il metodo utilizzato da computer e server per richiedere e inviare informazioni. Ad esempio, quando qualcuno accede a Cloudflare.com sul proprio laptop, il browser Web invia una richiesta HTTP ai server di Cloudflare per recuperare il contenuto mostrato sulla pagina. Quindi, i server Cloudflare inviano risposte HTTP con il testo, le immagini e la formattazione che il browser mostra all'utente.
La prima versione fruibile di HTTP è stata creata nel 1997. Poiché ha attraversato diverse fasi di sviluppo, questa prima versione di HTTP è stata chiamata HTTP/1.1. Questa versione è ancora in uso sul Web.
Nel 2015 è stata creata una nuova versione di HTTP denominata HTTP/2. HTTP/2 risolve diversi problemi che gli autori di HTTP/1.1 non avevano previsto. In particolare, HTTP/2 è molto più veloce ed efficiente di HTTP/1.1. Uno dei motivi per cui HTTP/2 è più veloce è il modo in cui dà la priorità ai contenuti durante il processo di caricamento.
Nel contesto delle prestazioni Web, la definizione delle priorità si riferisce all'ordine in cui vengono caricati i contenuti. Supponiamo che un utente visiti un sito Web di notizie e passi a un articolo. La foto nella parte superiore dell'articolo deve essere caricata per prima? Il testo dell'articolo deve essere caricato per primo? Gli annunci banner devono essere caricati per primi?
La definizione delle priorità influisce sul tempo di caricamento di una pagina Web. Ad esempio, alcune risorse, come file JavaScript di grandi dimensioni, possono bloccare il caricamento delle altre pagine se devono essere caricate prima. È possibile caricare più pagine contemporaneamente se queste risorse di blocco del rendering vengono caricate per ultime.
Inoltre, l'ordine in cui queste risorse delle pagine vengono caricate influisce sul modo in cui l'utente percepisce il tempo di caricamento delle pagine. Se solo il contenuto dietro le quinte (come un file CSS) o il contenuto che l'utente non può vedere immediatamente (come i banner pubblicitari in fondo alla pagina) viene caricato per primo, l'utente penserà che la pagina non venga caricata affatto. Se il contenuto più importante per l'utente viene caricato per primo, come l'immagine nella parte superiore della pagina, l'utente percepirà un caricamento più veloce della pagina.
In HTTP/2, gli sviluppatori hanno un controllo pratico e dettagliato sulla definizione delle priorità. Questo consente loro di aumentare al massimo la velocità di caricamento delle pagine percepita ed effettiva a un livello che non era possibile con HTTP/1.1.
HTTP/2 offre una funzionalità chiamata assegnazione ponderata delle priorità. In questo modo, gli sviluppatori possono decidere quali risorse delle pagine verranno caricate per prime, ogni volta. In HTTP/2, quando un client effettua una richiesta di una pagina Web, il server invia contemporaneamente diversi flussi di dati al client, invece di inviare un elemento dopo l'altro. Questo metodo di distribuzione dei dati è noto come multiplexing. Gli sviluppatori possono assegnare a ciascuno di questi flussi di dati un valore ponderato diverso e il valore indica al client quale flusso di dati deve essere visualizzato per primo.
Immagina che Alice voglia leggere un romanzo scritto dal suo amico Roberto, ma sia Alice che Roberto comunicano solo tramite posta ordinaria. Alice invia una lettera a Roberto, in cui gli chiede di inviarle il suo romanzo. Roberto decide di inviare il romanzo in stile HTTP/1.1: Invia un capitolo alla volta e invia il capitolo successivo solo dopo aver ricevuto una lettera di risposta da Alice in cui conferma di aver ricevuto il capitolo precedente. Utilizzando questo metodo di consegna dei contenuti, Alice impiega molte settimane per leggere il romanzo di Roberto.
Ora immagina che Roberto decida di inviare ad Alice il suo romanzo in stile HTTP/2: in questo caso, invia ogni capitolo del romanzo separatamente (per rimanere entro i limiti di dimensione del servizio postale) ma tutto allo stesso tempo. Inoltre numera ogni capitolo: Capitolo 1, Capitolo 2 ecc. In questo modo, Alice riceve il romanzo tutto in una volta e può assemblarlo nell'ordine corretto a suo piacimento. Se manca un capitolo, può inviare una rapida risposta chiedendo quel capitolo specifico, ma nel complesso il processo è completo e Alice può leggere il romanzo in pochi giorni.
In HTTP/2, i dati vengono inviati tutti in una volta, proprio come quando Roberto invia ad Alice più capitoli contemporaneamente. E proprio come Roberto, gli sviluppatori possono numerare i capitoli in HTTP/2. Possono decidere se caricare prima il testo di una pagina Web, i file CSS, il codice JavaScript o qualsiasi altro elemento che ritengono più importante per l'esperienza utente.
Multiplexing: HTTP/1.1 carica le risorse una dopo l'altra, quindi se una risorsa non può essere caricata, blocca tutte le altre risorse successive. Al contrario, HTTP/2 è in grado di utilizzare una singola connessione TCP per inviare più flussi di dati contemporaneamente in modo che nessuna risorsa blocchi un'altra risorsa. HTTP/2 lo fa suddividendo i dati in messaggi in codice binario e numerandoli in modo che il client sappia a quale flusso appartiene ciascun messaggio binario.
Push del server: in genere, un server fornisce contenuti a un dispositivo client solo se il client lo richiede. Tuttavia, questo approccio non è sempre pratico per le pagine Web moderne, che spesso coinvolgono diverse decine di risorse separate che il client deve richiedere. HTTP/2 risolve questo problema consentendo a un server di "inviare" il contenuto a un client prima che il client lo richieda. Il server invia anche un messaggio che consente al client di sapere quale contenuto aspettarsi, come se Roberto avesse inviato ad Alice un sommario del suo romanzo prima di inviare l'intera opera.
Compressione dell'intestazione: i file di piccole dimensioni si caricano più rapidamente di quelli di grandi dimensioni. Per accelerare le prestazioni Web, sia HTTP/1.1 che HTTP/2 comprimono i messaggi HTTP per renderli più piccoli. Tuttavia, HTTP/2 utilizza un metodo di compressione più avanzato chiamato HPACK che elimina le informazioni ridondanti nei pacchetto di intestazioni HTTP. In questo modo, si eliminano alcuni byte da ogni pacchetto HTTP. Dato il volume dei pacchetti HTTP coinvolti nel caricamento anche di una singola pagina Web, quei byte si sommano rapidamente, con conseguente caricamento più rapido.
HTTP/3 è la nuova versione proposta del protocollo HTTP. HTTP/3 non è ancora ampiamente diffuso sul Web, ma è in crescita. La differenza fondamentale tra HTTP/3 e le versioni precedenti del protocollo è che HTTP/3 viene eseguito su QUIC anziché su TCP. QUIC è un protocollo a livello di trasporto più veloce e sicuro progettato per le esigenze dell'Internet moderno.
Cloudflare supporta tutte le funzionalità di HTTP/2. Le proprietà Web su Cloudflare possono attivare HTTP/2 gratuitamente con un clic. Cloudflare supporta HTTP/3 oltre ad HTTP/2. Se il recente attacco HTTP/2 Rapid Reset ha destato il tuo interesse, contattaci per ricevere protezione immediata.