Co je cache? Srozumitelný průvodce pro tvůrce aplikací
Cache znamená uchovávání připravené kopie něčeho, co bylo pomalé nebo drahé získat, takže další požadavek na to lze rychle vyřídit z této kopie. Uložené kopii se říká cache (mezipaměť). Prohlížeč ukládá obrázky, aby se web při vaší druhé návštěvě načetl rychleji; server ukládá výsledek pomalého databázového dotazu, aby ho nemusel spouštět pro každého návštěvníka.
Cache dělá aplikace rychlejšími a levnějšími na provoz. Jejím velkým kompromisem je, že kopie může zastarat.
Proč na cache záleží, když stavíte s AI
S cache se v aplikacích postavených pomocí AI setkáte třemi způsoby:
- „Aplikaci jsem aktualizoval, ale pořád vidím starou verzi." Toto je nejčastější situace s cache a obvykle je neškodná — váš prohlížeč nebo CDN ukazuje uloženou kopii.
- Rychlost. Pokud je stránka pomalá, protože pro každého návštěvníka přepočítává stejná čísla, cache výsledku může způsobit, že bude působit okamžitě.
- Náklady. Mnoho AI nástrojů a hostingů účtuje výpočetní výkon, čas databáze a volání externích API. Pokud tisíc návštěvníků spustí tentýž drahý požadavek, cache vám umožní zaplatit za něj jen jednou.
Znalost základů vám umožní požádat o cache tam, kde pomůže, a poznat ji, když je důvodem, proč něco vypadá špatně.
Každodenní přirovnání
Představte si kuchyni rušné kavárny.
Kuchař by každou kávu mohl uvařit z čerstvě namletých zrn, až si ji někdo objedná. To je pomalé. Místo toho má na plotně připravený konvici filtrované kávy. Většina zákazníků dostane šálek během sekund — to je zásah cache. Když konvice dojde, někdo uvaří novou — to je minutí cache.
Káva ale delší dobu stojící zestárne, takže kavárna má pravidlo: vyhodit každou konvici starší než 30 minut. Tohle pravidlo je doba platnosti cache. Nikdo by neudržoval tutéž konvici celý den a nikdo by nepředvařil něčí zakázkovou objednávku s ovesným mlékem a třemi cukry — některé věci se vůbec nemají cachovat.
Kde cache žijí
Jedno načtení stránky může projít několika cache, od nejbližší uživateli po nejvzdálenější:
| Cache | Kde je | Co obvykle ukládá | Příklad |
|---|---|---|---|
| Cache prohlížeče | Na zařízení návštěvníka | Obrázky, styly, skripty, písma | Vaše logo se na druhé stránce načte okamžitě |
| CDN cache | Servery po celém světě, blízko návštěvníků | Statické soubory a někdy celé stránky | Návštěvník v Tokiu dostane soubory z nedalekého serveru, ne z vašeho zdroje |
| Aplikační cache | Na serveru nebo vedle něj, často v paměti nebo v Redis | Výsledky pomalých dotazů nebo volání externích API | Dnešní směnné kurzy, stažené jednou za hodinu |
| Cache databáze | Uvnitř databáze | Nedávno použitá data a plány dotazů | Oblíbené řádky zůstávají v rychlé paměti |
CDN (síť pro doručování obsahu) je v podstatě celosvětová síť cache pro soubory vašeho webu.
Jak cache rozhoduje, co si ponechat
Každá cache musí odpovědět na stejné otázky:
- Co se smí cachovat? Veřejná, sdílená data (obrázek produktu, blogový příspěvek) — ano. Soukromá data (stránka účtu uživatele, jeho zprávy) — nikdy ve sdílené cache.
- Jak dlouho? To je TTL (time to live, doba životnosti). Logo se může cachovat rok; stav skladu třicet sekund.
- Jak se aktualizuje? Buď kopie vyprší a načte se znovu, nebo ji aplikace při změně dat záměrně odstraní — tomu se říká invalidace.
U webů server říká prohlížečům a CDN, jak cachovat každý soubor, pomocí hlavičky Cache-Control. Například Cache-Control: max-age=3600 znamená „tuto kopii můžete použít znovu hodinu".
Moderní build nástroje zvládnou nejtěžší část u statických souborů pomocí cache busting: pokaždé, když se soubor změní, dostane nový název s otiskem, například app.3f9a2c.js. Prohlížeče mohou starý název cachovat dlouho, protože nová verze má prostě jiný název.
Praktický příklad: katalog produktů
Máte malý online obchod. Domovská stránka zobrazuje z databáze 50 produktů s cenami a stavem skladu, plus seznam „populární", který vyžaduje pomalý výpočet přes všechny objednávky.
- Obrázky a skripty cachují prohlížeč a CDN na dlouho. Každý nový build dá změněným souborům nové názvy, takže se aktualizace stále projeví.
- Seznam populárních se počítá jednou za 10 minut a ukládá se do aplikační cache. Každý návštěvník během těch 10 minut dostane uložený výsledek okamžitě.
- Ceny se cachují krátce a cache se vymaže vždy, když upravíte produkt, takže zákazníci nikdy dlouho neuvidí starou cenu.
- Sklad při pokladně se nikdy necachuje. Když někdo klikne na „Koupit", aplikace zkontroluje skutečnou databázi, takže nemůže prodat zboží, které právě došlo.
- Košík a stránky účtu se nikdy neukládají do sdílených cache, protože jsou osobní.
Výsledek: domovská stránka je rychlá, databáze dělá mnohem méně práce a nic, na čem záleží na penězích nebo soukromí, není nikdy zastaralé.
Klíčové pojmy
| Pojem | Význam |
|---|---|
| Zásah / minutí cache | Data byla v cache nalezena / musela se získat ze zdroje. |
| TTL (time to live) | Jak dlouho se uložená kopie považuje za čerstvou. |
| Zastaralá data | Uložená kopie, která je neaktuální. |
| Invalidace | Záměrné odstranění uložené kopie, protože se originál změnil. |
| Cache busting | Změna názvu nebo URL souboru při jeho změně, aby cache načetla novou verzi. |
| Cache-Control | Hlavička HTTP, která říká prohlížečům a CDN, jak mají odpověď cachovat. |
| Tvrdé obnovení | Znovunačtení stránky s pokynem prohlížeči, aby ignoroval svou cache. |
| Redis | Oblíbené úložiště dat v paměti, často používané jako aplikační cache. |
Časté omyly
- „Cache je vždy dobrá." Cachování špatné věci způsobuje skutečné chyby: staré ceny, chybějící nové příspěvky nebo — v nejhorším případě — soukromou stránku jednoho uživatele zobrazenou jinému. Cachujte promyšleně.
- „Když vidím starou verzi, aktualizace selhala." Obvykle ne. Zkuste tvrdé obnovení (Ctrl+Shift+R, nebo Cmd+Shift+R na Macu) nebo okno v anonymním režimu, než předpokládáte, že je něco rozbité.
- „Cache opraví pomalou aplikaci." Skrývá pomalost u opakovaných požadavků. První požadavek je stále pomalý, a pokud je základní problém chybějící index databáze, opravte i ten.
- „Měl bych cachovat všechno co nejdéle." Dlouhé doby cache se hodí pro soubory, které dostanou nový název, když se změní. U HTML stránek a dat jsou kratší časy bezpečnější.
- „Vymazání mé cache to opraví pro všechny." Vymaže jen vaši cache v prohlížeči. Návštěvníci a CDN cache mají své vlastní kopie.
Na co se zeptat svého AI nástroje
- „Které části této aplikace jsou pomalé a které by se daly bezpečně cachovat?"
- „Cachuj [seznam populárních / výsledek API] na [N] minut a vymaž ho, když se změní podkladová data."
- „Zajisti, aby žádnou stránku s osobními nebo účtovými údaji nemohla cachovat CDN ani sdílená cache."
- „Nastav dlouhé doby cache pro statické soubory s otiskem a krátké pro HTML."
- „Cachuj odpovědi z [externího API], abychom ho nevolali při každém načtení stránky — a řekni mi, jak moc mohou tato data zastarat."
- „Po publikování vidím starou verzi. Je to cache mého prohlížeče, nebo něco nebylo nasazeno?"
Cache v Mythexu
Po publikování aktualizace Mythex aplikace dokumentace uvádí, že CDN cache může chvíli zaostávat, a tvrdé obnovení veřejné URL ukáže novou verzi — viz Jak publikovat. Stránka Limity hostingu také doporučuje cachovat statické prostředky, protože hosting, čas databáze a přenos se platí z vašeho kreditního zůstatku. Cokoli nad to — cachování výsledků dotazů nebo odpovědí API — je něco, o co agenta požádáte, aby to zabudoval do vaší aplikace.
Další čtení: co je CDN, jak zrychlit web a co je omezení počtu požadavků.
Otázky
Co je cache jednoduše řečeno?
Cache znamená uložení kopie něčeho, co bylo pomalé nebo drahé získat, aby se při příštím požadavku mohlo rychle vydat z uložené kopie. Prohlížeče, CDN, servery i databáze používají cache, aby aplikace běžela rychleji a levněji.
Proč po aktualizaci webu stále vidím starou verzi?
Váš prohlížeč nebo CDN pravděpodobně vrací uloženou kopii starých souborů. Tvrdé obnovení stránky (Ctrl+Shift+R ve Windows, Cmd+Shift+R na Macu) to obvykle spraví. U návštěvníků dobře postavené weby dávají aktualizovaným souborům nové názvy, takže cache sama stáhne novou verzi.
Co dělá vymazání cache?
Vymazání cache prohlížeče smaže uložené kopie souborů a stránek, takže se při příštím načtení všechno stáhne znovu. Může opravit stránky, které vypadají rozbitě nebo zastarale, a první načtení poté bude o něco pomalejší.
Může cache způsobit problémy?
Ano. Hlavním rizikem je zastaralý obsah — stará cena, neaktuální stav skladu — nebo ještě hůř uložení soukromé stránky jednoho uživatele a její zobrazení někomu jinému. Dobrá pravidla pro cache určují, co se smí ukládat, jak dlouho, a osobní údaje se nikdy neukládají do sdílených cache.