Czym jest cache? Przewodnik prosto dla twórców aplikacji
Cache to gotowa kopia czegoś, co było wolne lub kosztowne do pobrania, dzięki czemu kolejne żądanie może zostać obsłużone szybko z tej kopii. Zapisana kopia nazywa się cache. Przeglądarka zapisuje obrazy, dzięki czemu strona ładuje się szybciej przy drugiej wizycie; serwer zapisuje wynik wolnego zapytania do bazy, żeby nie musiał go uruchamiać dla każdego odwiedzającego.
Cache sprawia, że aplikacje działają szybciej i są tańsze w utrzymaniu. Jego jedynym dużym kosztem jest to, że kopia może się zdezaktualizować.
Dlaczego cache ma znaczenie, gdy budujesz z AI
W aplikacjach budowanych przez AI spotkasz cache na trzy sposoby:
- „Zaktualizowałem aplikację, a nadal widzę starą wersję”. To najczęstsza sytuacja związana z cache i zwykle nieszkodliwa — przeglądarka lub CDN pokazuje zapisaną kopię.
- Szybkość. Jeśli strona jest wolna, bo dla każdego odwiedzającego przelicza te same liczby, zapisanie wyniku może sprawić, że będzie działać niemal natychmiast.
- Koszt. Wielu kreatorów AI i hostów pobiera opłaty za moc obliczeniową, czas bazy danych i zewnętrzne wywołania API. Jeśli tysiąc odwiedzających uruchamia to samo kosztowne żądanie, cache pozwala zapłacić za nie raz.
Znajomość podstaw pozwala poprosić o cache tam, gdzie pomaga, i rozpoznać go, gdy to on powoduje, że coś wygląda źle.
Codzienna analogia
Pomyśl o kuchni zatłoczonej kawiarni.
Każdego ranka szef kuchni mógłby parzyć każdą kawę ze świeżo zmielonych ziaren, gdy ktoś ją zamówi. To wolne. Zamiast tego trzyma na grzałce gotowy dzbanek kawy filtrowanej. Większość klientów dostaje kubek w kilka sekund — to trafienie w cache (cache hit). Gdy dzbanek się kończy, ktoś parzy świeży — to chybienie (cache miss).
Ale kawa stojąca zbyt długo staje się niedobra, więc kawiarnia ma regułę: wylewać każdy dzbanek starszy niż 30 minut. Ta reguła to czas wygaśnięcia cache. Nikt nie trzymałby tego samego dzbanka cały dzień, a nikt nie przygotowywałby wcześniej czyjegoś zamówienia z mlekiem owsianym i trzema łyżeczkami cukru — niektórych rzeczy w ogóle nie powinno się zapisywać.
Gdzie żyje cache
Jedno wczytanie strony może przejść przez kilka warstw cache, od najbliżej użytkownika do najdalszej:
| Cache | Gdzie się znajduje | Co zwykle przechowuje | Przykład |
|---|---|---|---|
| Cache przeglądarki | Na urządzeniu odwiedzającego | Obrazy, arkusze stylów, skrypty, czcionki | Twoje logo ładuje się od razu na drugiej stronie |
| Cache CDN | Serwery na całym świecie, blisko odwiedzających | Pliki statyczne i czasem całe strony | Odwiedzający w Tokio dostaje pliki z pobliskiego serwera, a nie z twojego źródła |
| Cache aplikacji | Na serwerze lub obok niego, często w pamięci lub Redis | Wyniki wolnych zapytań lub zewnętrznych wywołań API | Dzisiejsze kursy walut, pobrane raz na godzinę |
| Cache bazy danych | Wewnątrz bazy danych | Ostatnio używane dane i plany zapytań | Popularne wiersze pozostają w szybkiej pamięci |
CDN (content delivery network) to w istocie światowa sieć cache dla plików twojej strony.
Jak cache decyduje, co zatrzymać
Każdy cache musi odpowiedzieć na te same pytania:
- Co można zapisać? Publiczne, wspólne dane (zdjęcie produktu, wpis na blogu) — tak. Prywatne dane (strona konta użytkownika, jego wiadomości) — nigdy we wspólnym cache.
- Na jak długo? To TTL (time to live). Logo może być zapisane na rok; stan magazynowy — na 30 sekund.
- Jak się aktualizuje? Albo kopia wygasa i jest pobierana na nowo, albo aplikacja celowo ją usuwa, gdy dane się zmienią — to nazywa się unieważnianiem (invalidation).
W przypadku stron serwer mówi przeglądarkom i CDN-om, jak zapisywać każdy plik, za pomocą nagłówka Cache-Control. Na przykład Cache-Control: max-age=3600 oznacza „możesz użyć tej kopii przez godzinę”.
Nowoczesne narzędzia budujące radzą sobie z najtrudniejszą częścią dla plików statycznych dzięki cache busting: za każdym razem, gdy plik się zmienia, dostaje nową nazwę z odciskiem, np. app.3f9a2c.js. Przeglądarki mogą długo trzymać starą nazwę, bo nowa wersja ma po prostu inną nazwę.
Przykład krok po kroku: katalog produktów
Masz mały sklep internetowy. Strona główna pokazuje 50 produktów z cenami i stanami magazynowymi z bazy danych, a także listę „popularne”, która wymaga wolnego obliczenia po wszystkich zamówieniach.
- Obrazy i skrypty są zapisywane przez przeglądarkę i CDN na długo. Każdy nowy build nadaje zmienionym plikom nowe nazwy, więc aktualizacje wciąż się pojawiają.
- Lista popularnych jest obliczana raz na 10 minut i zapisywana w cache aplikacji. Każdy odwiedzający w tych 10 minutach dostaje zapisany wynik natychmiast.
- Ceny są zapisywane na krótko, a cache jest czyszczony, gdy edytujesz produkt, więc klienci nigdy nie widzą długo starej ceny.
- Stan magazynowy przy płatności nigdy nie jest zapisywany. Gdy ktoś kliknie „Kup”, aplikacja sprawdza prawdziwą bazę danych, więc nie sprzeda towaru, który właśnie się wyprzedał.
- Strony koszyka i konta nigdy nie są przechowywane we wspólnych cache, bo są osobiste.
Efekt: strona główna jest szybka, baza danych wykonuje dużo mniej pracy, a nic, co dotyczy pieniędzy lub prywatności, nigdy nie jest nieaktualne.
Kluczowe pojęcia
| Pojęcie | Znaczenie |
|---|---|
| Trafienie / chybienie w cache | Dane znaleziono w cache / trzeba było pobrać je ze źródła. |
| TTL (time to live) | Jak długo zapisana kopia jest uznawana za świeżą. |
| Nieaktualne dane (stale data) | Kopia w cache, która jest przestarzała. |
| Unieważnianie (invalidation) | Celowe usunięcie kopii w cache, bo oryginał się zmienił. |
| Cache busting | Zmiana nazwy lub adresu pliku przy zmianie, aby cache pobrał nową wersję. |
| Cache-Control | Nagłówek HTTP, który mówi przeglądarkom i CDN-om, jak zapisywać odpowiedź. |
| Twarde odświeżenie (hard refresh) | Przeładowanie strony z poleceniem dla przeglądarki, by zignorowała swój cache. |
| Redis | Popularny magazyn danych w pamięci, często używany jako cache aplikacji. |
Częste mylne przekonania
- „Cache zawsze jest dobry”. Zapisanie niewłaściwej rzeczy powoduje realne błędy: stare ceny, brakujące nowe wpisy albo — w najgorszym razie — prywatną stronę jednego użytkownika pokazaną innemu. Cache'uj świadomie.
- „Jeśli widzę starą wersję, aktualizacja się nie udała”. Zwykle się udała. Spróbuj twardego odświeżenia (Ctrl+Shift+R albo Cmd+Shift+R na Macu) lub okna prywatnego, zanim uznasz, że coś jest zepsute.
- „Cache naprawia wolną aplikację”. Ukrywa wolność przy powtarzających się żądaniach. Pierwsze żądanie nadal jest wolne, a jeśli prawdziwym problemem jest brakujący indeks w bazie, napraw też to.
- „Powinienem zapisywać wszystko jak najdłużej”. Długie czasy cache pasują do plików, które przy zmianie dostają nowe nazwy. Dla stron HTML i danych krótsze czasy są bezpieczniejsze.
- „Wyczyszczenie mojego cache naprawia to dla wszystkich”. Czyści tylko twoją przeglądarkę. Odwiedzający i cache CDN nadal mają własne kopie.
O co poprosić swojego kreatora AI
- „Które części tej aplikacji są wolne i które można bezpiecznie zapisać w cache?”
- „Zapisz w cache [listę popularnych / wynik API] na [N] minut i czyść go, gdy zmienią się dane źródłowe.”
- „Upewnij się, że żadna strona z danymi osobowymi lub danymi konta nie może być zapisana przez CDN ani wspólny cache.”
- „Ustaw długie czasy cache dla plików statycznych z odciskiem, a krótkie dla HTML.”
- „Zapisuj w cache odpowiedzi z [zewnętrznego API], żeby nie wywoływać go przy każdym wczytaniu strony — i powiedz mi, jak bardzo mogą się zdezaktualizować te dane.”
- „Po publikacji widzę starą wersję. To cache mojej przeglądarki, czy coś nie zostało wdrożone?”
Cache w Mythex
Po opublikowaniu aktualizacji aplikacji Mythex dokumentacja zaznacza, że cache CDN może krótko zostawać w tyle, a twarde odświeżenie publicznego adresu URL pokazuje nową wersję — zobacz Jak publikować. Strona Limity hostingu zaleca też cache'owanie zasobów statycznych, ponieważ hosting, czas bazy danych i transfer są opłacane z twojego salda kredytów. Wszystko poza tym — zapisywanie wyników zapytań czy odpowiedzi API — to coś, o co prosisz agenta, by wbudował w twoją aplikację.
Powiązane lektury: czym jest CDN, jak przyspieszyć stronę i czym jest rate limiting.
Pytania
Czym jest cache prostymi słowami?
Cache to zapisana kopia czegoś, co było wolne lub kosztowne do pobrania, dzięki czemu przy następnej potrzebie można to szybko podać z zapisanej kopii. Przeglądarki, CDN-y, serwery i bazy danych wszystkie korzystają z cache, by aplikacje działały szybciej i były tańsze w utrzymaniu.
Dlaczego po aktualizacji strony nadal widzę jej starą wersję?
Twoja przeglądarka albo CDN prawdopodobnie serwuje zapisaną kopię starych plików. Twarde odświeżenie (Ctrl+Shift+R w Windows, Cmd+Shift+R na Macu) zwykle to naprawia. Dla odwiedzających dobrze zbudowane strony nadają zaktualizowanym plikom nowe nazwy, dzięki czemu cache automatycznie pobiera nową wersję.
Co daje czyszczenie cache?
Czyszczenie cache przeglądarki usuwa zapisane kopie plików i stron, które przeglądarka przechowywała, więc następnym razem pobierze wszystko na nowo. Może to naprawić strony, które wyglądają na zepsute lub nieaktualne, a przy pierwszym ponownym wczytaniu strony będą ładować się trochę wolniej.
Czy cache może powodować problemy?
Tak. Główne ryzyko to podawanie nieaktualnych danych — starej ceny albo przestarzałego stanu magazynowego — albo, co gorsza, zapisanie prywatnej strony jednego użytkownika i pokazanie jej komuś innemu. Dobre reguły cache określają, co można zapisać, na jak długo, i nigdy nie zapisują danych osobowych we wspólnym cache.