Kešování čehokoliv obecně je složité, zejména u webových stránek, ne vždy se totiž dá přesně určit, jestli je potřeba stránku kešovat a jak se bude potom chovat. Špatně nastavené kešování může pro vývojáře znamenat pár hodin práce navíc. Určitě se vám stalo, že se vám z paměti načítala stránka, která již dávno nebyla aktuální. Proto, spousta vývojářů často zcela používání keše v kódu zakazovala. Popravdě nejjednodušší bylo udělat do kódu přidat následující tagy:
<meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0">
Jednu dobu se také do URL přidával parametr s číslem (?t=5475154), zpravidla vygenerované funkcí mktime(), které zajistilo, že stránka zavolaná s tímto parametrem se jevila jako vždy nová. V PHP samozřejmě funguje také následující:
header("Cache-Control: no-cache, must-revalidate"); header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
Pokud jste vypínali kešování na úrovni HTML kódu, vystavovali jste se riziku, že případná proxy na cestě mezi serverem a návštěvníkem bude nastavení keše ignorovat. Proto, s příchodem HTML5, byly HTML tagy z kódu odstraněny. Kešování si tak teď musíte řešit na straně serveru úpravou HTTP hlavičky viz. uvedený PHP kód. Nebo můžete využít HTML Cache manifestu.
Cache manifest
Primárně je cache manifest určen pro případy, kdy není k dispozici z nějakého důvodu připojení k síti. To ocení zejména majitelé mobilních zařízení, která ne vždy mají k dispozici datové připojení. V cache manifestu, který tvoří textový soubor se nadefinují soubory, které si má prohlížeč zapamatovat a která ne. Nejčastěji tak můžete snadno kešovat obrázky, CCS, JS apod. soubory, které se tak často nemění.
Cache manifest v jednoduchosti
Použití cache manifestu je potřeba zmínit v HTML kódu:
<html manifest="cache.manifest">
Do souboru cache.manifest (UTF8) si nyní můžete vypsat jednoduše soubory, které se budou kešovat
CACHE MANIFEST #soubory, ktere se budou cachovat #pripravil Neo /main/features.js /main/settings/index.css http://files/images/scene.jpg http://files/images/world.jpg
Příklad je jasný, takže k němu netřeba nic dodávat. Snad jen to, že takto zapsaný manifest bude soubory kešovat. Ne vždy je však potřeba soubory kešovat. Proto, do manifestu lze doplnit tři sekce NETWORK: CACHE: a FALLBACK:. Soubory vypsané v sekci NETWORK: se nekešují a tak při snaze o jejich načtení dojde k chybě. Sekce CACHE: je jasná. Do sekce FALLBACK: se pak uvádí soubor, který bude zavolán pokud požadovaný soubor nebude k dispozici. Typicky se FALLBACK: nahrazuje chybovou stránku 404, avšak v offline režimu.
Příklad:
CACHE MANIFEST NETWORK: /checking.cgi CACHE: /test.css /test.js /test.png FALLBACK: / /offline.html
Sekce FALLBACK: obsahuje jeden řádek, který říká, že pro jakoukoliv nedostupnou stránku v keši „/“, se má načíst soubor „/offline.html“. Více o cache manifestu najdete třeba na Wikipedii.