Caching (Kešování)

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é.

1. Jak funguje proces kešování?

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ě.

2. Typy kešování v IT architektuře

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.

3. Strategie obnovy (Cache Invalidation)

Největší výzvou kešování je zajistit, aby data nebyla zastaralá (stale data). Existují různé strategie:

TTL (Time to Live): Datům se nastaví „doba trvanlivosti“ (např. 1 hodina). Po jejím uplynutí se smažou.

Write-through: Data se zapisují současně do cache i do hlavní databáze.

Write-back: Data se zapíšou nejdřív do rychlé cache a do pomalé databáze se uloží až později (riziko ztráty při výpadku).

LRU (Least Recently Used): Když je cache plná, vymaže se to, co se nejdéle nepoužívalo.

4. Proč kešovat?

Rychlost: Dramaticky zkracuje dobu odezvy aplikace.

Šetření nákladů: Snižuje zátěž na databázové servery, což umožňuje provozovat web na levnějším hardwaru.

Dostupnost: V případě krátkého výpadku databáze může web stále fungovat díky datům uloženým v keši.

5. Úskalí: "Dva nejtěžší problémy"

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.

Zpět na Rozcestník