Przejdź do treści
Wydajność

Cache WordPress - jak prawidłowo skonfigurować?

Bez pamięci podręcznej każde wejście na stronę uruchamia PHP i kilkadziesiąt zapytań do bazy, żeby zbudować dokładnie ten sam wynik, co minutę wcześniej. Cache zapisuje gotowy rezultat i podaje go od razu. Problem w tym, że nie wszystko wolno zapamiętać. Koszyk, panel klienta i formularze muszą być za każdym razem świeże, a większość awarii po wdrożeniu cache bierze się właśnie z braku wykluczeń.

Cztery warstwy pamięci podręcznej

Nazywa się je tak samo, ale robią zupełnie co innego.

WarstwaCo zapisujeNajwiększy zysk
Cache stronygotowy HTML podstronywitryny z treścią, blogi, strony firmowe
Cache obiektówwyniki zapytań do bazysklepy i witryny z dużą liczbą wpisów
Cache opcodeskompilowany kod PHPkażda witryna, działa po stronie serwera
Cache przeglądarkipliki statyczne u użytkownikapowracający odwiedzający

Cache strony daje największy skok przy witrynie firmowej, bo eliminuje całe generowanie. W sklepie działa słabiej, bo znaczna część ruchu ma koszyk i wypada spod pamięci podręcznej. Tam więcej daje cache obiektów.

Cache opcode zwykle jest już włączony po stronie hostingu i nie wymaga wtyczki. Warto tylko sprawdzić, czy nie został wyłączony przy migracji.

Jedna wtyczka, nigdy trzy

Najczęstszy błąd przy przejmowaniu witryn to kilka wtyczek cache włączonych naraz. Zamiast się sumować, nadpisują sobie reguły, a efektem są nieaktualne strony i koszyk pokazujący cudze produkty.

Wybierz jedną i wyłącz resztę, usuwając też ich pliki konfiguracyjne. Część wtyczek zostawia po sobie wpisy w `wp-config.php` i katalogi w `wp-content`, które działają nawet po dezaktywacji.

Trzy wtyczki cache to najczęstsza rzecz, jaką wyłączamy przy przejmowaniu witryn. Zwykle każda została dołożona przez innego wykonawcę, w dobrej wierze i bez sprawdzenia, co już jest.
Krzysztof Czapnik, KC Mobile

Co trzeba wykluczyć z cache?

To najważniejsza część konfiguracji i jedyna, która potrafi zepsuć sprzedaż.

  • Koszyk, kasa i strona podziękowania za zamówienie
  • Panel klienta i wszystkie widoki po zalogowaniu
  • Strony z formularzami, jeśli zawierają zabezpieczenie tokenem
  • Wyniki wyszukiwarki wewnętrznej
  • Podglądy wpisów i cała administracja

Przy sklepie WooCommerce dobre wtyczki wykluczają te adresy automatycznie, ale warto to sprawdzić ręcznie. Test jest prosty: dodaj produkt do koszyka w oknie prywatnym, otwórz stronę w drugim oknie i sprawdź, czy koszyk jest pusty.

Osobno wyklucz ciasteczka sesji i zalogowanych użytkowników. Bez tego zdarza się najgorszy możliwy przypadek: jeden klient widzi zawartość koszyka drugiego.

Ustawienia, które warto włączyć

Poza samym zapisem strony wtyczki oferują kilka opcji, które realnie skracają czas ładowania.

Łączenie i minifikacja plików stylów oraz skryptów zmniejsza liczbę żądań. Przy nowoczesnym protokole zysk jest mniejszy niż kiedyś, ale minifikacja sama w sobie nadal opłaca się zawsze.

Opóźnienie skryptów, które nie są potrzebne do pierwszego widoku, przenosi je poza krytyczną ścieżkę. To najskuteczniejsza z tych opcji i jednocześnie najbardziej ryzykowna, bo potrafi zepsuć suwaki i formularze.

Wstępne generowanie stron sprawia, że pierwszy odwiedzający po wyczyszczeniu pamięci nie czeka na zbudowanie strony. Przy dużym serwisie warto to ograniczyć do najważniejszych adresów, bo generowanie kilkudziesięciu tysięcy podstron obciąża serwer bardziej niż ruch.

Cache po stronie serwera i CDN

Najszybszy cache to ten, który odpowiada, zanim zapytanie w ogóle dotrze do PHP. Hosting zarządzany pod WordPressa zwykle ma go wbudowanego i wtedy wtyczka jest zbędna albo wręcz szkodliwa.

Według ofert popularnych hostingów pakiety za 20-30 zł miesięcznie rzadko mają cache serwerowy, więc tam wtyczka jest jedynym wyjściem. Hosting zarządzany, od 100-300 zł miesięcznie, ma go standardowo.

Warstwa najdalej wysunięta to CDN, który może podawać całe strony ze swojej pamięci. Dla witryny firmowej to znaczące odciążenie serwera, dla sklepu wymaga ostrożnej konfiguracji wykluczeń. Kiedy się opłaca, opisujemy w poradniku CDN - co to jest.

Zasada porządkująca: warstwy mają się uzupełniać, nie dublować. Cache serwerowy plus wtyczka robiąca to samo to prosta droga do stron, które nie chcą się odświeżyć.

Cache obiektów: kiedy naprawdę go potrzebujesz

Cache strony nie pomaga tam, gdzie każdy użytkownik widzi coś innego. W sklepie dotyczy to koszyka i panelu klienta, w serwisie z logowaniem większości widoków. Wtedy wchodzi cache obiektów.

Zapisuje on wyniki zapytań do bazy, więc przy budowaniu strony WordPress nie pyta o to samo dziesiątki razy. Zysk rośnie z liczbą wpisów: przy witrynie z dwustoma stronami jest niewielki, przy sklepie z kilkoma tysiącami produktów bywa większy niż z cache strony.

Wymaga jednak wsparcia po stronie serwera, najczęściej Redisa albo Memcached. Według ofert popularnych hostingów pakiety za 20-30 zł miesięcznie zwykle tego nie mają, więc przy dużym sklepie to argument za mocniejszym pakietem, a nie za kolejną wtyczką.

Uwaga na typowy błąd: cache obiektów bez wsparcia serwera zapisuje dane do bazy, czyli dokładnie tam, gdzie miał odciążyć. Skutkiem jest wolniejsza witryna i puchnąca tabela z danymi tymczasowymi.

Jak sprawdzić, czy cache działa?

Otwórz stronę w oknie prywatnym i zajrzyj w nagłówki odpowiedzi w narzędziach przeglądarki. Większość rozwiązań dodaje własny nagłówek informujący, czy odpowiedź przyszła z pamięci podręcznej.

Drugi test to czas do pierwszego bajtu przed i po. Przy działającym cache strony powinien spaść wyraźnie, zwykle poniżej 200 milisekund.

Trzeci, najważniejszy przy sklepie: przejdź całą ścieżkę zakupu w oknie prywatnym. Dodanie do koszyka, przejście do kasy, wybór dostawy. Jeśli koszyk gubi produkty albo kasa pokazuje nieaktualne kwoty, wykluczenia są źle ustawione.

Po każdej zmianie w treści sprawdź, czy zmiana jest widoczna dla niezalogowanego użytkownika. Redaktor zwykle widzi świeżą wersję, bo jest zalogowany, i dlatego problem z odświeżaniem wychodzi dopiero po zgłoszeniu od klienta.

Najczęstsze problemy po wdrożeniu

ObjawPrzyczynaNaprawa
Zmiany w treści nie są widocznestrona wisi w pamięciskrócenie czasu życia, czyszczenie po publikacji
Koszyk gubi produktybrak wykluczeń dla sklepuwykluczenie adresów i ciasteczek sesji
Formularz zwraca błąd tokenuzapamiętana strona z nieaktualnym zabezpieczeniemwykluczenie adresu formularza
Rozjechany układ po włączeniu minifikacjikonflikt połączonych plikówwyłączenie łączenia, sama minifikacja
Suwak przestał działaćopóźnienie skryptówwykluczenie biblioteki suwaka

Reguła praktyczna: włączaj opcje pojedynczo i po każdej sprawdzaj stronę główną, kartę produktu i formularz. Włączenie dziesięciu przełączników naraz kończy się szukaniem winnego przez godzinę.

Ile to daje i ile kosztuje?

Cache jest najtańszym skokiem wydajności na witrynie treściowej, bo eliminuje całe generowanie strony. Przy sklepie zysk jest mniejszy, ale nadal wyraźny na listach produktów i stronach kategorii.

Według naszego cennika konfiguracja cache wchodzi w zakres podstawowej optymalizacji, czyli 500-1500 zł razem z obrazami i minifikacją. Dane z naszych wdrożeń pokazują, że przy witrynie bez cache sam ten krok skraca czas odpowiedzi serwera o rząd wielkości, z okolic sekundy do poniżej 200 milisekund.

Efekty widać od razu po wdrożeniu, w przeciwieństwie do zmian w treści. Konfigurujemy to jednorazowo albo w ramach opieki nad stroną WordPress - napisz przez formularz na stronie kontakt.

Korzyści

  • Jedna warstwa cache zamiast trzech wtyczek nadpisujących sobie reguły
  • Wykluczenia dla koszyka, kasy i formularzy ustawione i przetestowane
  • Sprawdzamy, czy hosting nie ma już cache po stronie serwera, zanim dołożymy wtyczkę
  • Test całej ścieżki zakupu po wdrożeniu, nie tylko strony głównej

Najczęściej zadawane pytania

Którą wtyczkę cache wybrać?
Ważniejsze od nazwy jest to, żeby była jedna i żeby miała poprawne wykluczenia dla sklepu. Jeśli hosting ma cache po stronie serwera, wtyczka bywa zbędna i wtedy lepiej z niej zrezygnować niż dublować warstwy.
Czy cache zaszkodzi sklepowi?
Tylko przy braku wykluczeń. Koszyk, kasa, panel klienta i wyszukiwarka muszą być poza pamięcią podręczną. Po konfiguracji przejdź całą ścieżkę zakupu w oknie prywatnym, bo to jedyny test, który to wychwytuje.
Zmieniłem treść, a strona pokazuje starą wersję. Co robić?
Wyczyść pamięć podręczną w panelu wtyczki i sprawdź, czy ma włączone czyszczenie po publikacji. Jeśli korzystasz z CDN, wyczyść też jego pamięć, bo trzyma własną kopię niezależnie od Twojego serwera.
Czy cache poprawia pozycje w Google?
Pośrednio, przez czas odpowiedzi serwera i wskaźniki Core Web Vitals. Bezpośrednio większe znaczenie ma to, że szybciej ładująca się strona traci mniej użytkowników przed obejrzeniem oferty.
Czy warto włączać łączenie plików CSS i JS?
Przy nowoczesnym protokole zysk jest mniejszy niż kiedyś, a ryzyko rozjechania układu realne. Sama minifikacja jest bezpieczniejsza i zwykle wystarcza. Jeśli włączasz łączenie, sprawdź stronę główną, kartę produktu i formularz.
Czy cache pomoże, jeśli problemem jest wolny hosting?
Częściowo. Cache eliminuje generowanie strony, więc odciąża serwer i maskuje jego słabość na stronach treściowych. Nie pomoże tam, gdzie zapytanie i tak musi trafić do PHP, czyli w koszyku, panelu klienta i wyszukiwarce. Jeśli po wdrożeniu cache czas odpowiedzi nadal przekracza pół sekundy, przyczyną jest serwer.
Ile powinien wynosić czas życia pamięci podręcznej?
Dla strony firmowej spokojnie kilka godzin, dla bloga z częstymi publikacjami krócej, dla sklepu z cenami zmienianymi codziennie warto ustawić czyszczenie po każdej aktualizacji produktu. Ważniejsze od samej liczby jest to, żeby publikacja treści czyściła pamięć automatycznie.
Bezpłatna wycena