Caching řeší jeden z největších problémů výpočetní techniky – rozdíl v rychlosti mezi různými typy úložišť. Zatímco procesor (CPU) pracuje extrémně rychle, čtení z pevného disku nebo databáze přes síť je v porovnání s ním velmi pomalé.
Když systém potřebuje data:
1. **Cache Hit (Zásah):** Podívá se do mezipaměti. Pokud tam data jsou, okamžitě je použije. 2. **Cache Miss (Minutí):** Pokud data v mezipaměti nejsou, musí je načíst z pomalého zdroje (databáze, disk), doručit uživateli a zároveň je **uložit do cache** pro příště.
Kešování probíhá na mnoha úrovních současně:
| Úroveň | Popis | Příklad |
|---|---|---|
| HW Cache | Přímo v procesoru (L1, L2, L3). | Urychluje přístup k instrukcím CPU. |
| Web Cache | V prohlížeči uživatele. | Obrázky a CSS se nestahují při každém kliknutí. |
| CDN | Rozmístěno po celém světě. | Film z Netflixu se streamuje ze serveru v Praze, ne z USA. |
| Database Cache | V operační paměti RAM. | Výsledky častých SQL dotazů (např. Redis, Memcached). |
| DNS Cache | V operačním systému. | Pamatuje si IP adresu webu, aby se nemusel ptát DNS serveru. |
Největší výzvou kešování je zajistit, aby data nebyla zastaralá (stale data). Existují různé strategie:
V IT koluje slavný vtip: „V informatice existují jen dva těžké problémy: invalidace cache, pojmenovávání věcí a chyby o jedničku (off-by-one errors).“ Pokud zapomenete vymazat keš po aktualizaci ceny produktu, uživatelé uvidí starou cenu, i když v databázi je už nová.
Tip: Při vývoji webu můžete vynutit načtení dat bez mezipaměti prohlížeče stisknutím klávesové zkratky Ctrl + F5.