Migliorare le prestazioni del sito con https


HTTP/2 - Migliora davvero le prestazioni del sito?

Gli sviluppatori web si dividono in due gruppi: quelli che già usano HTTP/2 per migliorare le prestazioni del sito Web e quelli che si stanno preparando a utilizzare HTTP/2 per loro prossimo progetto.

Se non hai ancora sentito parlare di HTTP/2 allora hai molto da recuperare!

Cos'è HTTP/2? Si tratta solo di marketing o c'è davvero di più?

HTTP/2 è l'ultima versione del noto protocollo di rete HTTP. HTTP sta per HyperTextTransferProtocol ed è utilizzato dal World Wide Web. Questo protocollo consente di distribuire informazioni di testo e multimediali, utilizzando i collegamenti Web tra nodi non direttamente connessi, come ad esempio accade tra il browser ed il server.

Ad esempio, il tuo browser ha utilizzato questo protocollo per richiamare e caricare questo articolo. Possiamo quindi affermare che senza HTTP non ci sarebbe Internet!

Prima di scrivere dei vantaggi di HTTP/2 e spiegare perché velocizza il caricamento del tuo sito, cerchiamo prima di capire come vengono trasferiti i dati tra sistemi indipendenti.

Il protocollo di rete HTTP

HTTP utilizza un modello client-server. Questo significa che il tuo browser (Firefox, Chrome ecc.) è il Client e che l'applicazione, ad esempio il blog che stai leggendo, è in esecuzione su un computer remoto, solitamente denominato host: Server.

Questo articolo può essere rintracciato e caricato da un indirizzo fisso UniformResourceLocator più noto con la locuzione URL. Quando hai cliccato sull'URL di questo articolo il tuo client ha generato una richiesta HTTP al server aziendeitalia.com per recuperare le informazioni nel formato HTML.

Una volta completato il trasferimento attraverso il protocollo di trasporto denominato TCP, il browser visualizza la risposta che, in questo caso, è il codice HTML che stai leggendo in questo momento!

Il protocollo di rete supporta sessioni e autenticazioni. Una sessione è composta da una sequenza di transazioni richiesta-risposta su una connessione TCP e su una porta specifica. Ad esempio la porta 80 viene utilizzata per HTTP e la porta 443 per le connessioni HTTPS.

HTTPS è quindi HTTP ma su SSL/TLS ossia una connessione end-to-end stabilita attraverso un canale crittografato che utilizza il protolocco TLS (Transport Layer Security).

HTTP/1.0 and HTTP/1.1

Prima che fosse introdotto HTTP/2 lo standard utilizzato era HTTP/1.1. HTTP/1.1 è una release successiva della versione originale HTTP/1.0. La versione originale HTTP/1.0 è stata ufficialmente introdotta nel 1996, mentre la release iniziale di HTTP/1.1 è stata introdotta nel 1997.

Una prima release migliorata ed aggiornata di questa versione è stata rilasciata nel 1999 ed un'altra successivamente nel 2014. La differenza sostanziale rispetto agli standard più obsoleti è l'introdizione del supporto a connessioni multiple per singola richiesta.

HTTP/1.0 supporta solo una singola connessione per ogni richiesta, mentre HTTP/1.1 permette di riutilizzare la stessa connessione più di una volta, un pò come se fosse una connessione permanente. Questo implica a una minore latenza che si traduce in un caricamento del sito più veloce.

La latenza è il ritardo di tempo tra la richiesta (causa) e la risposta (effetto). Questo parametro è stato ulteriormente migliorato con l'introduzione di HTTP/2

I metodi di richiesta HTTP in dettaglio

Abbiamo appena chiarito cosa sia una richiesta ad un server. HTTP permette di definire diversi metodi da implementare in base agli scopi ed delle azioni richieste alla risorsa. I metodi di richiesta più comuni sono GET e POST.

Quando richiami un URL cliccando su un link, il tuo browser esegue una richiesta GET. E' possibile visualizzare i parametri GET direttamente nell'URL, ad es. ?Id=42. La variabile GET è Id ed ha come valore 42. Quando invece si inserisci dei dati in un modulo, ad esempio per registrarti su un sito, e clicchi il pulsante di invio, il client esegue una richiesta POST.

Oltre a quelli indicati, HTTP supporta altri metodi che in genere non vengono utilizzati dal browser durante la navigazione in Internet.

Gli altri metodi sono:

  • HEAD (come GET ma senza corpo di risposta)
  • PUT (modifica o crea risorse)
  • DELETE (elimina la risorsa)
  • TRACE (richiesta di echi)
  • OPZIONI (restituisce metodi HTTP supportati)
  • CONNECT (converte la richiesta in un tunnel TCP / IP)
  • PATCH (applica le modifiche alla risorsa)

Risposte HTTP e codici di stato HTTP

Diamo ora un breve sguardo alle risposte. La risposta fornita dal server (a seguito di una richiesta) non contiene solo il corpo della risposta. Oltre al codice HTML fornito come output per costruire la pagina, ci sono anche i campi dell'intestazione della risposta.

Questi campi contengono importanti informazioni e parametri della transazione HTTP come ad esempio l'algoritmo di crittografia utilizzato o i meccanismi di cache implementati.

Per completezza ricordiamo che i parametri caratteristici sono inclusi anche nei campi di intestazione della richiesta.

La prima riga della risposta HTTP contiene sempre quello che viene definito codice di stato utilizzato dal client per interpretare correttamente la risposta.

E' capitato a tutti di visualizzare, almeno una volta, il messaggio Errore del server 500. Questo è appunto il codice di stato (500) inviato dal server a seguito del verificarsi di un errore del server.

Esistono diverse categorie di codici di stato, classificate ed identificabili in base alla prima cifra:

  • 1 [xx] - Informativo
  • 2 [xx] - Successo
  • 3 [xx] - Reindirizzamento
  • 4 [xx] - Errore del client
  • 5 [xx] - Errore del server

Vantaggi di HTTP/2

HTTP/2 supporta la maggior parte della sintassi di alto livello introdotta nella revisione HTTP/1.1. Ad esempio, i metodi di richiesta ed i codici di stato sono i medesimi. La novità più rilevante è il modo in cui i pacchetti dati vengono incapsulati e scambiati tra i nodi.

Il server può inviare i dati al client anche se questi non sono ancora stati richiesti dal browser ma in questo caso sarà richiesta l'esecuzione del rendering della pagina.

Inoltre, su una singola connessione TCP, possono esserci richieste multiplex (richieste o risposte combinate) e pipeline (richieste multiple senza attendere le risposte corrispondenti).

Questi miglioramenti tendono a ridurre la latenza che ancora una volta si traduce in una maggior velocità di caricamento della risorsa. Un miglioramento, a seconda dei casi, anche molto significativo.

Come posso sfruttare i vantaggi di HTTP/2?

Per prima cosa è necessario chiarire che sia il client che il server devono comprendere e supportare questo standard. Sia il client che il server devono quindi 'parlare' la stessa lingua

Il supporto HTTP/2 è già pienamente implementato in tutti i browser moderni e questo significa che il tuo browser caricherà automaticamente le pagine web su HTTP/2 se anche il server supporta questo standard. Da parte del cliente non sono quindi richieste implementazioni di alcun tipo.

Come posso attivare HTTP/2 sul mio sito web?

Alla luce di quanto esposto, è ora evidente che per poter fornire risposte attraverso HTTP/2 il sito deve essere in hosting su un server che supporti questo protocollo. La configurazione di HTTP/2 infatti, deve essere implementata sul server.

Tutti i siti più moderni dovrebbero quindi essere ospitati su server che offrano questa configurazione ed è per questo che i nostri servizi di hosting condiviso ed i servizi cloud supportano nativamente il protocollo HTTP/2.