Cache - co to jest i jak dzięki niemu przyspieszyć stronę WWW nawet kilkukrotnie?

Czym jest cache i dlaczego to najtańszy sposób na szybką stronę? Wyjaśniamy pamięć podręczną przeglądarki, cache serwera, OPcache, Redis i CDN. Praktyczne wskazówki dla WordPressa i sklepów internetowych oraz typowe błędy konfiguracji.

Co to jest cache (pamięć podręczna)?

Cache (czyt. „kasz", po polsku: pamięć podręczna) to mechanizm przechowywania raz przygotowanych danych, aby przy kolejnym żądaniu nie trzeba było wykonywać tej samej pracy od nowa. Zamiast za każdym razem uruchamiać kod PHP, odpytywać bazę danych i składać stronę od zera, serwer może podać gotowy wynik w ułamku sekundy.

Dlaczego to takie ważne? Badania Google pokazują, że wraz z wydłużaniem czasu ładowania strony z 1 do 3 sekund prawdopodobieństwo, że użytkownik ją porzuci, rośnie o 32%. Szybkość strony jest też oficjalnym czynnikiem rankingowym Google (Core Web Vitals). Dobrze skonfigurowany cache to najtańszy sposób poprawy obu tych rzeczy - nie wymaga mocniejszego serwera ani przepisywania strony.

Warstwy cache - od przeglądarki po bazę danych

Cache nie jest jednym mechanizmem - to kilka warstw, które działają niezależnie i się uzupełniają:

  • Cache przeglądarki - pliki (obrazy, CSS, JS) zapisane na dysku odwiedzającego.
  • CDN - kopie plików na serwerach rozsianych po świecie, bliżej użytkownika.
  • Cache strony (full page cache) - gotowy HTML całej podstrony trzymany na serwerze.
  • OPcache - skompilowany kod PHP w pamięci serwera.
  • Cache obiektowy (np. Redis) - wyniki zapytań do bazy danych w pamięci RAM.

Największy efekt daje włączenie ich wszystkich - każda warstwa eliminuje inny rodzaj pracy.

Cache przeglądarki - nagłówki, które musisz znać

Gdy użytkownik odwiedza stronę po raz drugi, jego przeglądarka nie musi ponownie pobierać logo, arkuszy stylów czy skryptów - o ile serwer jej na to pozwoli. Steruje tym nagłówek HTTP Cache-Control:

  • Cache-Control: public, max-age=31536000, immutable - „trzymaj ten plik rok i nie pytaj". Idealne dla plików z wersją w nazwie (np. style.a1b2c3.css).
  • Cache-Control: no-cache - „możesz przechować, ale za każdym razem sprawdź, czy plik się nie zmienił".
  • Cache-Control: no-store - „nie zapisuj wcale" (dane wrażliwe, koszyki, panele).

Na hostingu w McProdukt długi cache dla plików statycznych jest skonfigurowany domyślnie. Jeśli zarządzasz konfiguracją samodzielnie, pamiętaj o żelaznej zasadzie: długi cache tylko dla plików, których nazwa zmienia się przy każdej modyfikacji - inaczej użytkownicy będą widzieć starą wersję strony.

Cache całych stron - największy skok wydajności

Strona na WordPressie przy każdym wejściu wykonuje dziesiątki zapytań do bazy i uruchamia setki plików PHP. Full page cache zapisuje ostateczny HTML i podaje go kolejnym odwiedzającym bez uruchamiania PHP w ogóle. Różnica bywa dramatyczna: z 1-2 sekund generowania do 20-50 milisekund.

Jak to włączyć w WordPressie?

  • LiteSpeed Cache - najlepszy wybór na serwerach LiteSpeed/OpenLiteSpeed; cache działa na poziomie serwera WWW, czyli najszybszym możliwym.
  • WP Super Cache / W3 Total Cache / WP Rocket - sprawdzone wtyczki generujące statyczne pliki HTML.

Ważne: włącz wykluczenia dla koszyka, stron logowania i panelu (dobre wtyczki robią to automatycznie dla WooCommerce). Zalogowani użytkownicy zwykle omijają cache - to celowe.

Kiedy czyścić cache?

Po każdej zmianie wyglądu lub treści, która „nie chce się pokazać". Dziewięć na dziesięć zgłoszeń „zmieniłem stronę, ale nic się nie zmieniło" to właśnie stary cache - strony albo przeglądarki (odśwież z pominięciem cache: Ctrl+F5).

OPcache - darmowe przyspieszenie PHP

PHP jest językiem interpretowanym: przy każdym żądaniu serwer normalnie czyta pliki .php i kompiluje je do kodu pośredniego. OPcache przechowuje wynik tej kompilacji w pamięci RAM, dzięki czemu kolejne żądania pomijają najdroższy etap. To przyspieszenie rzędu 2-3× dla samego PHP - bez żadnych zmian w kodzie strony.

Na hostingu McProdukt OPcache jest włączony domyślnie dla wszystkich wersji PHP 8.x. Jeśli prowadzisz własny serwer VPS, upewnij się, że rozszerzenie jest aktywne (dyrektywa opcache.enable=1) i ma sensowny rozmiar pamięci (opcache.memory_consumption=128 lub więcej dla większych aplikacji).

Redis - cache obiektowy dla baz danych

Nawet z full page cache część żądań musi przejść przez PHP - np. koszyk w sklepie, wyszukiwarka, panel zalogowanego klienta. Wtedy wąskim gardłem staje się baza danych. Cache obiektowy (najczęściej Redis) trzyma wyniki powtarzalnych zapytań w pamięci RAM: zamiast pytać MySQL o listę kategorii przy każdym żądaniu, aplikacja dostaje ją z Redisa w mikrosekundach.

W WordPressie wystarczy wtyczka Redis Object Cache - po jej włączeniu liczba zapytań do MySQL potrafi spaść o 80-95%. Największą różnicę zobaczysz w sklepach WooCommerce i na stronach z dużą liczbą zalogowanych użytkowników.

CDN - cache rozproszony po całym świecie

CDN (Content Delivery Network) to sieć serwerów w wielu krajach, które przechowują kopie Twoich plików statycznych. Użytkownik z Niemiec pobierze obrazki z Frankfurtu, a nie z Warszawy - fizyczna odległość ma znaczenie, bo każde 1000 km to dodatkowe milisekundy opóźnienia.

Kiedy CDN ma sens? Gdy Twoi odbiorcy są rozproszeni geograficznie albo strona serwuje dużo mediów. Dla lokalnej strony firmowej z polskimi klientami hostowanej w Polsce zysk będzie niewielki - lepiej zainwestować czas w cache serwera. Popularny darmowy start to Cloudflare, który przy okazji daje ochronę przed atakami DDoS.

5 typowych błędów konfiguracji cache

  1. Cache stron z koszykiem lub logowaniem - użytkownik A widzi dane użytkownika B. Zawsze wykluczaj strony dynamiczne.
  2. Długi max-age bez wersjonowania plików - klienci widzą starą wersję CSS przez tydzień po wdrożeniu zmian.
  3. Dwie wtyczki cache naraz - konflikt, który potrafi położyć całą stronę. Jedna wtyczka full page cache, nigdy dwie.
  4. Brak czyszczenia cache po aktualizacji - stare skrypty + nowy motyw = błędy JavaScript.
  5. Testowanie szybkości jako zalogowany administrator - admin omija cache, więc wyniki nie mówią nic o doświadczeniu zwykłego gościa. Testuj w trybie incognito lub narzędziem typu PageSpeed Insights.

Jak zmierzyć efekt?

Przed i po zmianach sprawdź stronę w PageSpeed Insights (pagespeed.web.dev) - zwróć uwagę na metrykę TTFB (Time To First Byte, czas do pierwszego bajta) i LCP (Largest Contentful Paint). Dobrze skonfigurowany full page cache sprowadza TTFB poniżej 200 ms. Pamiętaj, żeby każdy test wykonać 2-3 razy - pierwszy pomiar może trafić na „zimny" cache.

Najczęściej zadawane pytania

Czy cache może coś zepsuć?

Źle skonfigurowany - tak (patrz sekcja o błędach). Dobrze skonfigurowany jest niewidoczny dla użytkownika: strona po prostu działa szybciej. Zaczynaj od ustawień domyślnych renomowanej wtyczki i zmieniaj pojedyncze opcje, sprawdzając efekt.

Jak często cache czyści się sam?

Full page cache zwykle wygasa po zadanym czasie (np. 1-24 h) i jest czyszczony automatycznie przy publikacji treści. Cache przeglądarki wygasa według max-age. Ręczne czyszczenie potrzebne jest głównie po zmianach w wyglądzie strony.

Strona nadal wolna mimo cache - co dalej?

Sprawdź wersję PHP (8.x jest wyraźnie szybsze od starszych), zoptymalizuj obrazy (format WebP), ogranicz liczbę wtyczek i zewnętrznych skryptów. Jeśli problem leży w bazie danych sklepu, rozważ wyższy pakiet hostingu z większą ilością RAM lub Redis.

Podsumowanie

Cache to nie jedna magiczna opcja, lecz kilka współpracujących warstw: przeglądarka, CDN, cache stron, OPcache i Redis. Włączenie ich w rozsądnej konfiguracji potrafi przyspieszyć stronę kilkukrotnie bez wydawania złotówki na mocniejszy serwer. Na hostingu McProdukt OPcache i cache plików statycznych działają od pierwszego dnia, a nasz zespół chętnie pomoże dobrać resztę konfiguracji do Twojej strony.

Powiązane poradniki

Wszystkie poradniki z kategorii: Szybkość i wydajność

Powiązane usługi McProdukt

Zobacz również