Hlavní obsah

Kliknete Zpět a stránka se objeví okamžitě. Prohlížeč ji možná vůbec znovu nenačet

Foto: Pexels

Back/forward cache může držet celý zmrazený stav stránky v paměti. Když se vrátíte, prohlížeč ji jen obnoví - bez nového stahování, parsování a spouštění.

Článek

Kliknete na článek, zjistíte, že vás nezajímá, a dáte Zpět. Seznam výsledků se objeví skoro dřív, než prst opustí touchpad. Někdy zůstane i přesně na stejném místě, se stejnými otevřenými prvky a stavem stránky.

To nemusí být jen „rychlý internet“ ani obyčejná cache obrázků. Moderní prohlížeče mají ještě agresivnější trik: back/forward cache neboli bfcache.

HTTP cache skladuje soubory. bfcache může skladovat celou stránku

Tohle je nejdůležitější rozdíl. Běžná HTTP cache uchovává odpovědi ze sítě - třeba obrázek, CSS nebo JavaScript - aby je nebylo nutné znovu stahovat.

bfcache jde dál. web.dev ji popisuje jako snapshot celé stránky v paměti, včetně JavaScriptového heapu. Když z takové stránky odejdete, prohlížeč ji nemusí zničit. Může její stav pozastavit a na chvíli si ho odložit.

JavaScript se při odchodu může doslova zmrazit

Při uložení stránky do bfcache je její běh pozastavený. Skripty neběží dál na pozadí tak, jako by stránka pořád byla aktivní v popředí.

Když uživatel stiskne Zpět nebo Vpřed a prohlížeč má stále použitelný snapshot, stránku znovu zobrazí a JavaScript obnoví. Proto návrat může působit téměř okamžitě - nemusí se znovu stahovat dokument, znovu parsovat HTML ani znovu stavět celý JavaScriptový stav.

Proto se můžete vrátit přesně tam, kde jste byli

Výhoda není jen v rychlosti. Snapshot obsahuje mnohem víc než síťové soubory. Prohlížeč může obnovit pozici scrollu, obsah formuláře nebo stav rozhraní přesně tak, jak jste ho opustili.

Právě to vytváří ten zvláštní pocit, že stránka nikdy nezmizela. Z pohledu uživatele se vlastně opravdu jen na chvíli schovala.

Ne každá návštěva Zpět skončí v bfcache

bfcache není záruka. Stránka může být pro tuto optimalizaci nezpůsobilá, prohlížeč ji může z paměti vyhodit nebo může potřebovat místo pro něco jiného.

web.dev uvádí, že bfcache dnes mají všechny hlavní prohlížeče, ale konkrétní použití závisí na stránce a prohlížeči. Když snapshot není dostupný, návrat proběhne tradičněji a stránka se musí znovu sestavit, i když jí HTTP cache může část práce ušetřit.

Proč to webaři musí vědět

Pro vývojáře je zmrazení stránky trochu zrada. Pokud web předpokládá, že každá návštěva vznikne novým načtením, může po návratu zobrazit zastaralá data nebo špatně obnovit spojení.

Proto existují události pageshow a pagehide a způsoby, jak zjistit, zda byla stránka obnovena z bfcache. Některé techniky a otevřené zdroje mohou způsobilost pro bfcache zablokovat.

Je to cache, která se chová spíš jako pauza

Název cache svádí k představě zásobníku souborů. U bfcache je ale lepší představit si celé zmrazené okno aplikace. Odejdete, prohlížeč ho pozastaví a pokud má stále jeho snapshot, při návratu jen znovu rozsvítí stejnou scénu.

Proto tlačítko Zpět někdy působí skoro nadpřirozeně rychle. Síť nemusí dostat vůbec žádnou práci. Stránka totiž v jistém smyslu nikam neodešla.

Zdroje

Máte na tohle téma jiný názor? Napište o něm vlastní článek.

Texty jsou tvořeny uživateli a nepodléhají procesu korektury. Pokud najdete chybu nebo nepřesnost, prosíme, pošlete nám ji na medium.chyby@firma.seznam.cz.

Sdílejte s lidmi své příběhy

Stačí mít účet na Seznamu a můžete začít publikovat svůj obsah. To nejlepší se může zobrazit i na hlavní stránce Seznam.cz