HTTP/2 Server Push umožňuje webovým stránkám nabízet klientům obsah potřebný k vykreslení stránky, aniž by bylo nutné čekat, až si o něj klient řekne. Pokud například prohlížeč stahuje titulní stránku webu, může server paralelně nabídnout stažení obrázků, kaskádových stylů a dalších souborů. Podrobně jsme o tom psali před lety při představování tehdy nového protokolu HTTP/2.
Myšlenka je to jistě dobrá, ale velmi brzy se ukázalo, že to celé nefunguje podle očekávání. Implementace se liší mezi prohlížeči, klient nemá kontrolu nad stahovaným obsahem (ignoruje se například klientova keš) a v mnoha případech nakonec zůstává přenášený obsah nevyužitý. V praxi navíc celou složitou funkcionalitu používá velmi málo webů a celkový přínos je velmi sporný.
Vývojáři Google se tedy už před časem rozhodli podporu HTTP/2 Server Push z prohlížeče Chrome odstranit. Příští verze 106 podporu ve výchozím stavu vypne. Podpora napříč weby navíc meziročně klesla z loňských 1,25 % na letošních 0,7 %. Specifikace protokolu HTTP/3 sice podporu Server Push obsahuje, ale většina serverů a klientů ji stejně neimplementuje. Zdá se, že jde o definitivně mrtvou věc.
Zajímavou alternativou může být například stavový kód 103 Early Hints, který místo tlačení umožňuje serveru napovědět odkaz na další důležitý obsah. Je pak na klientovi, aby se rozhodl, zda ho má začít paralelně stahovat. Klient však v tomto případě může aktivně ovlivnit, co si stáhne a co naopak nepotřebuje, třeba protože už to má v keši. Druhou variantou pak může být HTML hlavička Preload, ve které můžeme už na začátku klienta informovat, jaký obsah bude ještě potřebovat v průběhu vykreslování stránky.