HTTP/2 (originariamente chiamato HTTP/2.0) è la nuova versione del protocollo di rete HTTP usato dal World Wide Web. È basato su SPDY. HTTP/2[1] è stato sviluppato dal Working Group Hypertext Transfer Protocol (httpbis) dell'Internet Engineering Task Force[2]. HTTP/2 sarebbe la prima nuova versione del protocollo HTTP dalla nascita di HTTP 1.1, il quale è diventato standard RFC 2616 nel 1999. Il Working Group ha presentato HTTP/2 allo IESG proponendolo come standard nel dicembre 2014.[3]
Gli sforzi effettuati per la standardizzazione sono una risposta allo SPDY, un protocollo HTTP-compatibile sviluppato da Google[4] e supportato in Chrome, Opera, Firefox, Internet Explorer 11, Safari, e Amazon Silk.[5]
I cambiamenti proposti non richiedono nessuna modifica al modo di lavorare delle applicazioni Web esistenti, ma le nuove applicazioni possono avvantaggiarsi delle novità introdotte per incrementare la velocità.[7]
HTTP/2 mantiene ad alto livello la maggior parte della sintassi di HTTP 1.1 come metodi, codici di stato, campi degli header, URI. La differenza sta nel come il flusso dei dati tra il client e il server è strutturato e trasportato.[7] I siti Web efficienti minimizzano il numero di richieste necessarie per restituire una pagina con la tecnica del "minifying" o minimizzazione (riducendo le dimensioni del codice e impacchettando piccoli pezzi di codice in unità più grandi, senza intaccarne la funzionalità) applicata su risorse come immagini e script. Ad ogni modo la minimizzazione non è necessariamente conveniente né efficiente e può ancora richiedere distinte connessioni HTTP per ottenere la pagina e le risorse minimizzate.
HTTP/2 permette al server di inviare ("push") più dati di quelli richiesti dal client. Questo consente al server di fornire dati che sa essere necessari ad un web browser per completare la pagina, senza attendere che il browser esamini la prima risposta e senza l'overhead di un ciclo di richiesta addizionale.[8]
Altri miglioramenti prestazionali nella prima stesura di HTTP/2 (che era una copia di SPDY) vengono dal multiplexing di richieste e risposte, allo scopo di evitare le problematiche di tipo HOLB (head-of-line blocking) note in HTTP/1.1 (anche quando utilizzata la tecnica dell'HTTP pipelining), compressione degli header, gestione delle richieste in base alla priorità delle stesse (prioritization).[9]