Mozillácké drobnosti: Link Prefetching

Ať si říká, kdo chce, co chce, vývojáři Mozilly si vždy našli chvilku času, aby implementovali do svého prohlížeče zajímavé funkce. Na tomto blogu jsem již psal o chvályhodné snaze implementovat podporu rozdělení textu do více sloupců ve Firefoxu 1.5. Dnes bych se zaměřil na nepříliš známou, však o to užitečnější funkci, kterou dostala do vínku již stařičká Mozilla 1.2.

Link prefetching

Osobně se často při procházení internetu setkávám s obsahem, který je rozdělen na několik navazujících částí. Typicky se jedná o dlouhé články, internetové knihy, diskusní vlákna a podobně. Každá z těchto částí může sama o sobě představovat nezandebatelný datový objem, kterýžto fakt jsem ještě před rokem a půl jako uživatel rychlého 64 kilobitového připojení bolestivě pociťoval. Klasickým představitelem takového rozkouskovaného obra jsou specifikace W3C, kdy jednotlivé části mohou snadno dosahovat velikosti 50kB a větší.

V té době jsem používal první verze Firefoxu a listování specifikacemi bylo mimořádně rychlé. Přičítal jsem to tehdy vynikající optimalizaci prohlížeče a Ohnivou Lišku jsem si hned zamiloval. Náklonnost k Firefoxu mi vydržela do dneška i přes zjištění, že s tou rychlostí to není tak slavné a že tehdy při procházení specifikací zapracovala šikovná funkce Mozilly, link prefetching, která mi jednotlivé navazující stránky načítala „do zásoby“.

Jak to funguje?

Jedním ze způsobů, jak dostat na svůj web příjemnou funkci link prefetchingu, je element <link>. Příklad:
<link rel="prefetch" href="mapa_webu.html">
<link rel="next" href="dalsi_stranka.html">

Všimněte si zejména atributu rel, který dle specifikace určuje vztah k objektu odkazovanému atributem href. V případě, že tento atribut nabývá hodnoty prefetch nebo next, Mozilla si takto odkazovaný objekt po načtení samotného dokumentu začne načítat do cache.

Na tomto místě je důležité zmínit, že odkazujete-li na jiný dokument, do cache se načte pouze zdrojový kód dokumentu, nikoliv jeho vkládané objekty (obrázky, stylopisy atp.). Z tohoto důvodu v některých případech žádné zrychlení postřehnout nemusíte.

Když potom přejdete na odkazovanou stránku, její zdrojový kód je k dispozici okamžitě. Na stejném principu můžete odkazovat i na jiné objekty, například na větší obrázky, což může být užitečné například při procházení fotogalerie. Vyvstává však otázka, co se stane, pokud přejdete na další obrázek dřív, než se stačí nahrát do cache? Nic strašného. Prefetching se zastaví a pak záleží na tom, jakou část obrázku již prohlížeč stačil stáhnout. Data přijímá a do cache ukládá v segmentech, pokud stihl uložit jeden či více segmentů, nebude je při načítání obrázku stahovat znovu a začne přímo nestaženými daty.

Jde to i jinak

Element <link> není jedinou možností, jak v dokumentu aktivovat link prefetching. Můžete využít i HTTP hlavičky Link, která se vyskytovala ve starší specifikaci protokolu HTTP/1.1 [RFC 2068]. V té současné [RFC 2616] již sice nefiguruje, přesto ji Mozilla chápe a správně zpracovává. Syntaxe je následující:
Link: <dalsi_obrazek.jpg>; rel=prefetch

Nejsnáze asi příslušnou HTTP hlavičku pošlete pomocí PHP, a to následovně:

header ("Link: <dalsi_obrazek.jpg>; rel=prefetch");

Jaký způsob si vyberete, to je jen na vás. Posílání ve formě HTTP hlaviček je přínosem zejména v případě, kdy chcete přednačíst nějaký multimediální objekt, nejčastěji obrázek. Odkazování na video soubory či hudbu zásadně nedoporučuji!

Naproti tomu element <link> často slouží k vyjádření alternativní navigace. Hodnoty „first“, „prev“, „next“, „last“ či „contents“ (a další) atributu rel mohou být zpracovány a využity prohlížeči či alternativními zařízeními. I přesto, že této funkce využívá jen minimum uživatelů, je lepší tyto strukturní vztahy vyjádřit přímo ve zdrojovém kódu dokumentu.

Příklad

Používáte-li Mozillu (Firefox), můžete si link prefetching odzkoušet na tomto příkladu. Prosím, na odkazované stránce si přečtěte nejdříve potřebné instrukce.

Resumé

Link prefetching je zajímavá schopnost prohlížečů založených na jádru Gecko přednačíst odkazovaný obsah do své cache. Prefetching se aplikuje na objekty odkazované elementem <link> či HTTP hlavičkou téhož názvu, obojí s uvedeným atributem rel s hodnotou next nebo prefetch. Odkazujete-li multimediální obsah, využijte raději možnosti HTTP hlavičky, v opačném případě element <link>.

Odkazy

19. 3. 2006, 14.57 | Prohlížeče.


Zanechte komentář





Můžete použít Texy! formátování.
Pokud se obsah boxů níže mění, zatímco píšete, potom žádné číslice nevyplňujte. V takovém případě antispam funguje, pouze se prohlížeči nepovedlo skrýt tento box.