Czym jest cache i dlaczego przyspiesza twoją stronę?
Cache, czyli pamięć podręczna, polega na zapisaniu wyniku, żeby nie trzeba go było za każdym razem tworzyć ani pobierać od nowa. Bez cache serwer buduje każdą stronę od zera dla każdego odwiedzającego, nawet jeśli nic się nie zmieniło; z cache odwiedzający od razu dostaje zapisany wynik. Warstw jest pięć: cache przeglądarki, cache sieci CDN, cache stron, cache obiektów i cache opcode w PHP. Jeśli wprowadzona zmiana się nie pojawia, prawie zawsze widać jedną z tych warstw.
Pięć warstw, od odwiedzającego do serwera
- Cache przeglądarki. Przeglądarka odwiedzającego zapisuje lokalnie obrazy, arkusze stylów i skrypty. Dzięki temu druga podstrona Państwa witryny ładuje się znacznie szybciej.
- Cache CDN. Sieć CDN, taka jak Cloudflare, przechowuje kopie Państwa plików na serwerach blisko odwiedzającego. Domyślnie chodzi o pliki statyczne, czyli obrazy, CSS i JavaScript, a nie o same strony.
- Cache stron. Zapisywana jest w pełni wygenerowana strona HTML. Przy kolejnym odwiedzającym PHP i baza danych nie są już potrzebne. Daje to najwięcej na stronach, które rzadko się zmieniają. W WordPressie zajmuje się tym wtyczka cache.
- Cache obiektów. Odpowiedzi bazy danych są przechowywane w pamięci, zwykle za pomocą Redis lub Memcached. Pomaga to głównie na stronach o dużym ruchu i w sklepach internetowych, gdzie o te same dane pyta się setki razy na minutę.
- Cache opcode. PHP najpierw tłumaczy każdy skrypt na instrukcje wykonywalne. OPcache przechowuje to tłumaczenie w pamięci, żeby nie powtarzać go przy każdym żądaniu. Niczego Państwo nie zauważą, poza tym że zmieniony plik PHP czasem zaczyna działać dopiero po chwili.
„Nie widzę swojej zmiany”
Klasyczne nieporozumienie. Coś Państwo zmieniają, odświeżają stronę i nic się nie dzieje. Proszę nie zakładać, że zmiana się nie powiodła, tylko sprawdzić warstwy po kolei, od najbliższej do najdalszej:
- Proszę otworzyć stronę w oknie prywatnym. Takie okno startuje bez zapisanych plików i bez zalogowania. Jeśli tam zmianę widać, winna była pamięć podręczna przeglądarki.
- Proszę wymusić pełne odświeżenie: Ctrl+F5 w systemie Windows, Cmd+Shift+R na Macu. Przeglądarka pobierze wtedy wszystkie pliki strony od nowa.
- Proszę wyczyścić cache stron w swoim CMS-ie albo we wtyczce cache. Jeśli zmianę widać po zalogowaniu, a w oknie prywatnym nie, to niemal na pewno jest to przyczyna: zalogowani użytkownicy zwykle nie dostają stron z cache.
- Proszę wyczyścić cache CDN, jeśli korzystają Państwo z takiej sieci. W Cloudflare można wyczyścić jeden adres albo wszystko.
- Zmieniony został arkusz stylów albo skrypt? One trzymają się najdłużej, bo przeglądarki mogą je przechowywać tygodniami. Proszę nadać plikowi nowy numer wersji w nazwie albo po znaku zapytania w adresie; wtedy każda przeglądarka uzna go za nowy plik.
- Proszę sprawdzić, czy zmieniony został właściwy plik. Zmiana w kopii albo w nieaktywnym motywie nigdy nie będzie widoczna.
Kiedy czyścić cache
- po zmianie w projekcie graficznym, menu, stopce albo widżecie, bo są one na każdej podstronie
- po aktualizacji CMS-a, motywu albo wtyczki
- po przenosinach albo przejściu na https, żeby w zapisanych stronach nie zostały stare adresy
Dobra wtyczka cache sama czyści stronę, którą Państwo edytują. Czyszczenie całego cache za każdym razem działa na niekorzyść: serwer musi potem zbudować wszystkie strony od nowa.
Czego nigdy nie zapisuje się w cache
Stron, które są inne dla każdego odwiedzającego: koszyka, kasy, konta oraz formularzy z kodem zabezpieczającym. Jeśli trafią do cache stron, jeden odwiedzający zobaczy dane drugiego albo formularz zadziała tylko raz. Wtyczki cache zwykle same wykluczają standardowe strony WooCommerce; proszę to sprawdzić po przebudowie sklepu.
Częste błędy
- Dwie wtyczki cache jednocześnie. Zapisują nawzajem swoje wyniki i czyszczenie nigdy nie działa w pełni. Proszę wybrać jedną.
- Używanie cache do ukrywania wolnej strony. Strona, która bez cache potrzebuje ośmiu sekund, pozostaje wolna dla pierwszego odwiedzającego i dla każdego zalogowanego klienta. Najpierw proszę znaleźć przyczynę; zobacz dlaczego moja strona nagle działa wolno.
Pełne podejście dla WordPressa, w którym cache jest jednym z elementów, opisujemy na stronie przyspieszenie WordPressa. Jak mierzy się szybkość, wyjaśnia artykuł czym są Core Web Vitals.
Najczęstsze pytania
Czy stracę coś, czyszcząc cache?
Nie. Cache zawiera wyłącznie kopie. Państwa strony, obrazy i baza danych pozostają nietknięte; kopie zostaną odtworzone przy następnej wizycie.
Jak wyczyścić cache w telefonie?
Proszę otworzyć stronę w karcie prywatnej: to najszybszy test. Właściwe czyszczenie wykonuje się w ustawieniach przeglądarki, w sekcji prywatności lub danych przeglądania. Plików cookie nie trzeba przy tym usuwać.
Czy cache DNS to to samo?
Nie. Cache DNS pamięta, na który serwer wskazuje Państwa domena, a nie to, co jest na stronie. Ma znaczenie tylko po przenosinach albo po zmianie DNS. Zobacz dlaczego zmiana DNS czasem trwa tak długo.
Czy mała strona potrzebuje cache?
Cache przeglądarki i cache opcode pomagają każdej stronie i zwykle są już włączone. Cache stron opłaca się, gdy tylko strona działa na CMS-ie. Cache obiektów ma sens dopiero przy dużym ruchu, sklepie internetowym albo strefie dla członków.
Coś nie działa?
Jeśli zmiana pozostaje niewidoczna po wyczyszczeniu wszystkich warstw, prosimy przesłać nam przez stronę kontaktową adres strony i informację, co dokładnie zostało zmienione.