Čo je cachovanie? Jednoduchý sprievodca pre tvorcov aplikácií
Cachovanie znamená uchovávanie pripravenej kópie niečoho, čo bolo pomalé alebo drahé na získanie, aby sa ďalšia požiadavka na to dala zodpovedať rýchlo z tejto kópie. Uložená kópia sa volá cache. Prehliadač si ukladá obrázky, aby sa stránka pri druhej návšteve načítala rýchlejšie; server si ukladá výsledok pomalého databázového dotazu, aby ho nemusel spúšťať pre každého návštevníka.
Cachovanie robí aplikácie rýchlejšími a lacnejšími na prevádzku. Jeho jediný veľký kompromis je, že kópia môže zastarať.
Prečo cachovanie záleží, keď stavate s AI
S cachovaním sa v aplikáciách vytvorených AI stretnete na troch miestach:
- „Aktualizoval som aplikáciu, ale stále vidím starú verziu.“ Toto je najčastejší moment s cachovaním a zvyčajne je neškodný – váš prehliadač alebo CDN zobrazuje uloženú kópiu.
- Rýchlosť. Ak je stránka pomalá, pretože pre každého návštevníka znova počíta tie isté čísla, cachovanie výsledku ju môže spraviť takmer okamžitou.
- Náklady. Mnohé nástroje na tvorbu aplikácií a hostingy účtujú výpočtový výkon, čas databázy a volania externých API. Ak tisíc návštevníkov spustí rovnakú náročnú požiadavku, cachovanie vám umožní zaplatiť za ňu len raz.
Základné poznanie vám umožní požiadať o cachovanie tam, kde pomáha, a rozpoznať ho, keď je dôvodom, prečo niečo vyzerá nesprávne.
Každodenná analógia
Predstavte si kuchyňu rušnej kaviarne.
Chef by každú kávu mohol každé ráno uvariť z čerstvo namletých zŕn, keď si ju objednáte. To je pomalé. Namiesto toho má na plotni pripravený zásobník filtrovanej kávy. Väčšina zákazníkov dostane šálku za pár sekúnd – to je zásah cache (cache hit). Keď zásobník dôjde, niekto uvarí novú várku – to je chýbajúca položka v cache (cache miss).
Káva, ktorá stojí dlho, však zostarne, preto má kaviareň pravidlo: každý zásobník starší ako 30 minút sa vyhodí. Toto pravidlo je čas expirácie cache. Nikto by si nenechal ten istý zásobník celý deň a nikto by nevopred neuvaroval zákazníkovu špeciálnu objednávku s ovsným mliekom a tromi lyžičkami cukru – niektoré veci sa vôbec necachujú.
Kde žijú cache
Jedno načítanie stránky môže prejsť cez niekoľko cache, od najbližšej používateľovi po najvzdialenejšiu:
| Cache | Kde je | Čo zvyčajne ukladá | Príklad |
|---|---|---|---|
| Cache prehliadača | Na zariadení návštevníka | Obrázky, štýly, skripty, fonty | Vaše logo sa na druhej stránke načíta okamžite |
| CDN cache | Servery po celom svete, blízko návštevníkov | Statické súbory a niekedy celé stránky | Návštevník v Tokiu dostane súbory z blízkeho servera, nie z vášho pôvodného servera |
| Cache aplikácie | Na serveri alebo vedľa neho, často v pamäti alebo Redis | Výsledky pomalých dotazov alebo volaní externých API | Dnešné kurzy mien, stiahnuté raz za hodinu |
| Cache databázy | Vnútri databázy | Nedávno použité dáta a plány dotazov | Obľúbené riadky zostávajú v rýchlej pamäti |
CDN (sieť doručovania obsahu) je v podstate celosvetová sieť cache pre súbory vášho webu.
Ako cache rozhoduje, čo si ponechá
Každá cache musí odpovedať na tie isté otázky:
- Čo sa dá cachovať? Verejné, zdieľané dáta (obrázok produktu, blogový článok) – áno. Súkromné dáta (stránka účtu používateľa, jeho správy) – nikdy v zdieľanej cache.
- Ako dlho? Toto je TTL (time to live, doba životnosti). Logo sa môže cachovať rok; stav skladu 30 sekúnd.
- Ako sa aktualizuje? Buď kópia vyprší a získa sa znova, alebo ju aplikácia zámerne odstráni, keď sa dáta zmenia – to sa nazýva invalidácia.
Pri webových stránkach server hovorí prehliadačom a CDN, ako cachovať každý súbor, pomocou hlavičky Cache-Control. Napríklad Cache-Control: max-age=3600 znamená „túto kópiu môžeš použiť znova jednu hodinu“.
Moderné nástroje na zostavenie projektu zvládajú najťažšiu časť pri statických súboroch pomocou cache busting: každý raz, keď sa súbor zmení, dostane nový názov s odtlačkom, napríklad app.3f9a2c.js. Prehliadače môžu starý názov cachovať dlho, pretože nová verzia má jednoducho iný názov.
Praktický príklad: katalóg produktov
Máte malý online obchod. Domovská stránka zobrazuje 50 produktov s cenami a stavom skladu z databázy, plus zoznam „populárne“, ktorý vyžaduje pomalý výpočet cez všetky objednávky.
- Obrázky a skripty sú cachované prehliadačom a CDN na dlhý čas. Každé nové zostavenie dá zmeneným súborom nové názvy, takže aktualizácie sa stále zobrazia.
- Zoznam populárnych sa počíta raz za 10 minút a ukladá sa v cache aplikácie. Každý návštevník počas tých 10 minút dostane uložený výsledok okamžite.
- Ceny sa cachujú krátko a cache sa vyčistí vždy, keď upravíte produkt, takže zákazníci nikdy dlho nevidia starú cenu.
- Sklad pri pokladni sa nikdy necachuje. Keď niekto klikne na „Kúpiť“, aplikácia overí skutočnú databázu, takže nemôže predať tovar, ktorý práve vypredal.
- Košík a stránky účtu sa nikdy neukladajú do zdieľaných cache, pretože sú osobné.
Výsledok: domovská stránka je rýchla, databáza robí oveľa menej práce a nič, čo je dôležité pre peniaze alebo súkromie, nie je nikdy zastarané.
Kľúčové pojmy
| Pojem | Význam |
|---|---|
| Zásah / chýbajúca položka cache (hit / miss) | Dáta sa našli v cache / museli sa získať z pôvodného zdroja. |
| TTL (time to live) | Ako dlho sa uložená kópia považuje za čerstvú. |
| Zastaralé dáta | Uložená kópia, ktorá je neaktuálna. |
| Invalidácia | Zámerné odstránenie uloženej kópie, pretože pôvodný zdroj sa zmenil. |
| Cache busting | Zmena názvu alebo URL súboru pri jeho zmene, aby cache stiahla novú verziu. |
| Cache-Control | HTTP hlavička, ktorá hovorí prehliadačom a CDN, ako cachovať odpoveď. |
| Tvrdé obnovenie (hard refresh) | Načítanie stránky s pokynom prehliadaču, aby ignoroval svoju cache. |
| Redis | Populárne úložisko dát v pamäti, často používané ako cache aplikácie. |
Bežné omyly
- „Cachovanie je vždy dobré.“ Cachovanie nesprávnej veci spôsobuje skutočné chyby: staré ceny, chýbajúce nové články alebo – najhorší prípad – súkromnú stránku jedného používateľa zobrazenú inému. Cachujte premyslene.
- „Ak vidím starú verziu, moja aktualizácia zlyhala.“ Zvyčajne nezlyhala. Skúste tvrdé obnovenie (Ctrl+Shift+R, alebo Cmd+Shift+R na Macu) alebo súkromné okno, skôr než predpokladáte, že je niečo rozbité.
- „Cachovanie opraví pomalú aplikáciu.“ Skrýva pomalosť pri opakovaných požiadavkách. Prvá požiadavka je stále pomalá, a ak je základný problém chýbajúci index v databáze, opravte aj ten.
- „Mal by som všetko cachovať čo najdlhšie.“ Dlhé časy cache sa hodia pre súbory, ktoré pri zmene dostanú nové názvy. Pre HTML stránky a dáta sú kratšie časy bezpečnejšie.
- „Vyčistenie mojej cache to opraví pre všetkých.“ Vymaže len vašu cache prehliadača. Návštevníci a cache CDN majú stále svoje vlastné kópie.
Čo sa opýtať nástroja na tvorbu aplikácií
- „Ktoré časti tejto aplikácie sú pomalé a ktoré by sa dali bezpečne cachovať?“
- „Cachuj [zoznam populárnych / výsledok API] na [N] minút a vymaž ho, keď sa zmenia podkladové dáta.“
- „Uisti sa, že žiadna stránka s osobnými údajmi alebo údajmi účtu nemôže byť cachovaná CDN ani zdieľanou cache.“
- „Pre statické súbory s odtlačkom nastav dlhé časy cache a pre HTML krátke.“
- „Cachuj odpovede z [externého API], aby sme ho nevolali pri každom načítaní stránky – a povedz mi, ako zastarané môžu byť tieto dáta.“
- „Po publikovaní vidím starú verziu. Je to cache môjho prehliadača, alebo niečo nie je nasadené?“
Cachovanie v Mythex
Po publikovaní aktualizácie aplikácie Mythex dokumentácia upozorňuje, že cache CDN môžu krátko zaostávať, a tvrdé obnovenie verejnej URL zobrazí novú verziu – pozrite Ako publikovať. Stránka Limity hostingu tiež odporúča cachovať statické zdroje, pretože hosting, čas databázy a prenos sa platia z vášho kreditu. Všetko nad to – cachovanie výsledkov dotazov alebo odpovedí API – je niečo, čo agentovi zadáte, aby to vložil do vašej aplikácie.
Súvisiace čítanie: čo je CDN, ako zrýchliť váš web a čo je rate limiting.
Otázky
Čo je cachovanie jednoducho povedané?
Cachovanie znamená uložiť kópiu niečoho, čo bolo pomalé alebo drahé na získanie, aby sa pri ďalšej potrebe dalo podať rýchlo z uloženej kópie. Prehliadače, CDN, servery aj databázy používajú cache, aby boli aplikácie rýchlejšie a lacnejšie na prevádzku.
Prečo po aktualizácii webu stále vidím starú verziu?
Váš prehliadač alebo CDN pravdepodobne zobrazuje uloženú kópiu starých súborov. Tvrdé obnovenie (Ctrl+Shift+R v systéme Windows, Cmd+Shift+R na Macu) to zvyčajne vyrieši. Pre návštevníkov dobre navrhnuté weby dávajú aktualizovaným súborom nové názvy, aby si cache automaticky stiahla novú verziu.
Čo robí vymazanie cache?
Vymazanie cache prehliadača odstráni uložené kópie súborov a stránok, takže sa všetko pri ďalšej návšteve stiahne nanovo. Môže opraviť stránky, ktoré vyzerajú rozbité alebo zastarané, a prvé načítanie potom bude o chvíľu pomalšie.
Môže cachovanie spôsobiť problémy?
Áno. Hlavné riziko je podávanie zastaraných dát – starej ceny alebo nesprávneho stavu skladu – alebo, ešte horšie, uloženie súkromnej stránky jedného používateľa a jej zobrazenie niekomu inému. Dobré pravidlá cachovania určujú, čo sa dá cachovať, ako dlho a že osobné dáta sa nikdy necachujú v zdieľaných cache.