El protocol HTTP es va inventar l'any 1991 a un terminal NeXTcube amb una CPU de 25 MHz i diversos MB de RAM. Aquells anys, les pàgines web no eren precisament com les d'ara. Aleshores, per què seguim usant-ho?
Segons Daniel Sternberg a http2 explained, la quantitat de dades que es necessita avui dia per carregar la pàgina dinici duna web normal és 1,9 MB i més de cent recursos (des duna foto a un tipus de lletra o un fitxer CSS). Tot i això el principal protocol de la WWW segueix sent el HTTP / 1.1.
Mentre que altres protocols s'han anat actualitzant amb els anys (per exemple, l'FTP va passar a ser SFTP, POP3 va evolucionar a IMAP i telnet va deixar pas a SSH), HTTP/1.1 no havia canviat des de l'última revisió el 1999, de manera que ha acumulat problemes de velocitat, seguretat i usabilitat. Per això, el 2015 va aparèixer l'HTTP/2, la segona gran versió del protocol d'internet més útil, basada en SPDY.
SPDY: el precursor de l'HTTP/2
Google es va llançar abans que ningú a investigar els problemes de l'HTTP/1.1. A mitjan dècada del 2000, l'empresa gastava milions de dòlars l'any a mantenir els centres de dades i el protocol HTTP/1.1 suposava un gran cost en recursos de CPU i capacitat de connexió a internet. Per això, com a alternativa experimental a l'HTTP/1.1, el 2009 van llançar SPDY, un protocol dissenyat per millorar la seguretat i la velocitat de càrrega de les pàgines que esdevindria el precursor d'HTTP/2.
Novetats de l'HTTP/2
La gran millora que introdueix el HTTP/2 és la velocitat, que s'aconsegueix mitjançant diverses novetats. Tot això repercutirà optimitzant el temps de càrrega duna pàgina sense haver de fer res per part nostra.
- Estructura binària.
L'estructura de capçaleres i dades en text pla se substitueix per marcs binaris que encapsulen la informació. L'ús d'aquest tipus d'estructura permet habilitar la compressió i reutilització d'una mateixa connexió TCP, cosa que comporta una optimització dels recursos de xarxa, el temps de càrrega i la latència. - Proactivitat (Server push)
Els servidors poden enviar respostes per iniciativa pròpia, avançant-se a la petició del client. Per exemple, si fins ara s'havia de carregar tot l'HTML d'una pàgina web abans de carregar el contingut en si (CSS, fotos…), amb HTTP/2 el servidor pot enviar elements que componen la pàgina com CSS, Javascript o altres de manera que quan el client rep el document ja disposa dels recursos que aquest necessita. El client a més pot guardar en memòria cau aquests elements per reutilitzar-los en altres documents i així reduir la càrrega de xarxa. - Multiplexat
Atès que a HTTP/1.1 resulta molt més eficient recuperar una imatge gran que fer moltes peticions d'imatges petites, se'ns ha recomanat condensar totes les icones en un sol fitxer sprite (que els torna tots en una sola petició HTTP). Això no obstant, això comporta que de vegades l'usuari rebi un arxiu molt més gran del necessari. En canvi, el protocol HTTP/2 permet atendre diverses comandes alhora, realitzant peticions paral·leles mitjançant una única connexió TCP, el que es coneix com a multiplexat. afilat de dominis i la concatenació ja no són necessaris. Com que amb el protocol HTTP/2 es poden sol·licitar tants recursos com siguin necessaris —a diferència de l'HTTP/1.1, que limita el nombre de connexions obertes—, no cal repartir els recursos de grans dimensions en diversos dominis. Així mateix, molts desenvolupadors concatenen tots els petits fitxers CSS i JavaScript de la pàgina web amb la intenció de limitar les peticions HTTP. Amb HTTP/2, és preferible organitzar els recursos en funció de les pàgines on es faran servir o tenint en compte la freqüència de canvi. Així s'aconsegueix enviar només el codi que l'usuari necessita.
Algunes crítiques a HTTP/2
Si bé actualment no hi ha alternativa superior a l'HTTP/2, molts especialistes esperaven funcions més noves, com la substitució de les cookies per noves tecnologies; no obstant això, no es van arribar a incloure a la versió final. A més, algunes de les funcions noves, com la compressió de capçaleres, són vulnerables a atacs INCOMPLIMENT y CRIMA. Tot i que sens dubte el xifratge és el punt que més controvèrsia ha causat, ja que no és obligatori; tanmateix, els navegadors principals només acceptaran comunicacions HTTP/2 si estan xifrades.
Hem de canviar les nostres pàgines web?
HTTP/2 només canvia la manera com es transmeten les dades, no afecta l'especificació HTML. Així, HTTP/2 és compatible retroactivament amb HTTP/1.1 respecte als continguts i aplicacions web.
A causa de les tècniques d'optimització per a HTTP/1.x descrites a l'apartat “Multiplexat” amb què es tendeix a utilitzar codi en linia (incrustat en comptes de referenciat) o fitxers sprite, a mesura que els servidors es vagin actualitzant per utilitzar HTTP/2 i més usuaris facin servir navegadors compatibles amb HTTP/2, una pàgina web que havia estat ben optimitzada començarà a semblar més lenta que les optimitzades per al nou protocol.
Quan ens canviem a HTTP/2?
Per poder utilitzar HTTP/2 tant el servidor com el client web han de ser compatibles amb aquest protocol.
Si els nostres visitants no tenen un client web (Firefox, Chrome, IE, …) compatible amb HTTP/2 i actualitzem el servidor perquè serveixi les pàgines amb el nou protocol, simplement no podran accedir als nostres webs. És un factor important que cal tenir en compte.
En el cas dels dissenyadors i desenvolupadors que no controlen els servidors on treballen, el pas no es podrà fer fins que els servidors i clients web s'actualitzin.
Si gestiones el teu propi servidor, el procés d'actualització a HTTP/2 requereix certs passos tècnics i pot resultar convenient deixar-ho a les mans d'enginyers qualificats.
Quan la pàgina estigui allotjada en un servidor compatible amb HTTP/2, la decisió de continuar optimitzant per a HTTP/1.1 o per a HTTP/2 dependrà del protocol que utilitzin la majoria dels nostres usuaris.