Kešování je ukládání zdrojů, které již byly staženy z internetu, do paměti. Odtud se znovu nahrají ve chvíli, kdy budou opět potřeba a nebude je tedy nutné zdlouhavě stahovat znovu. Kešování šetří zdroje a zrychluje načítání webových stránek.
Kešování dnes probíhá na mnoha úrovních:
- svou vlastní keš mají internetové prohlížeče
- stránky se kešují na nejrůznějších místech internetu po cestě od serveru k vám
- stránky kešují také servery, aby je nemusely pokaždé vytvářet znovu
Nevýhodou kešování je fakt, že obsah uložený v keši už může být zastaralý. Pokud například stránku upravíte a prohlížeč návštěvníka si ji vezme ze své keše, návštěvník se o změnách nedozví.
Proto se každému zdroji (HTML dokumentu, kaskádovým stylům, obsaženým obrázkům apod.). nastavuje pomocí HTTP hlaviček délka expirace. HTML dokumentům nejkratší a ostatním zdrojům pak delší – s tím, že při změně se zkrátka změní adresa zdroje odkazovaná z HTML.
Jak vypnout u souboru kešování
Někdy změníte soubor, třeba na web nahrajeme novou verzi PDF dokumentu nebo upravený soubor s kaskádovými styly, a prohlížeč vám stále tvrdošíjně ukazuje původní obsah souboru před změnou. Právě proto, že máte soubor nakešovaný. Nejjednodušší je přidat za název nějaký URL parametr, například screen.css?v=2
. Spolehlivějším řešením, které 100% funguje i na serverových keších, je úplně změnit jméno souboru, například na: screen_v2.css
.
Jen pro zajímavost, v Adapticu používáme při vývoji internetových aplikací automatický skript, který při nahrávání kaskádových stylů na web vytvoří unikátní hash, který pak ve všech šablonách vloží do jména souboru: screen.min.13cbb8c8bb.css
. To min
v názvu značí, že skript zároveň soubor minimalizuje (odstraní z něj mezery a komentáře).
Na serveru pak máme nastavený Apache tak, aby při volání takového souboru podstrčil soubor screen.min.css
. Můžeme tedy na serveru nastavit kešování CSS na celé dny a přitom se změny ve stylech návštěvníkům projeví okamžitě – a to vše se děje automaticky, aniž by to vývojáří zabíralo čas, který si zákazníci draze platí.