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.