Server push HTTP/2: deprecato perché

Cos'era HTTP/2 Server Push

Server Push era una feature di HTTP/2 che permetteva al server di inviare risorse al browser proattivamente, prima che le richiedesse. Esempio: ricevuta richiesta per /index.html, il server pushava style.css e app.js senza attendere che il browser li scoprisse parsando l'HTML. In teoria riduceva latenza percepita.

La promessa

Risparmiare 1 RTT eliminando il discovery time. Per un primo visitatore senza cache, ridurre 100-300ms su CSS e JS critici. Funzione molto pubblicizzata al lancio di HTTP/2, supportata da Nginx, Apache, Node.js. Molti articoli del 2016-2018 la consigliavano come boost performance.

I problemi emersi

Over-pushing: server pusha risorse già in cache del browser, sprecando banda. Sotto-utilizzo: pushed resources scartate dal cache prima di essere usate. Race condition con cache lookup. Implementazioni server inconsistenti. Difficoltà di debug. Misurazioni reali mostravano benefici minimi o regressioni.

Cache digest mai arrivato

Per risolvere over-pushing serviva cache digest: il browser dichiara cosa ha già in cache. Lo standard non e mai stato finalizzato. Senza cache awareness, server push era "sparare al buio". Per visitatori abituali (cache calda) era controproducente.

Chrome lo ha deprecato

Chrome ha rimosso il supporto a HTTP/2 Push in Chrome 106 (novembre 2022). Motivo ufficiale: "low utilization and complexity, with most use cases better served by preload". Firefox e Safari hanno seguito. HTTP/3 non include push.

L'alternativa: 103 Early Hints + preload

L'approccio moderno usa 103 Early Hints (RFC 8297): il server invia una risposta provvisoria con Link header rel=preload PRIMA della response finale. Il browser inizia preload mentre il server elabora la pagina. Supportato da Cloudflare, Fastly, Chrome 103+, Edge. Risolve il problema senza i bug di push.

Hai bisogno di aiuto?

Se vuoi un sito veloce ottimizzato dal team di G Tech Group, scrivici tramite il modulo di contatto.

Hai trovato utile quest'articolo?