Informacja reklamowa: serwis zawiera linki afiliacyjne. Możemy otrzymać prowizję po zakupie, ale nie podnosi to ceny dla użytkownika. Ceny, promocje i warunki mogą ulec zmianie.

Jak działa afiliacja?

WordPress

Redis na hostingu WordPress — kiedy naprawdę pomaga, a kiedy nic nie zmieni?

Redis może przyspieszyć WordPressa, ale nie jest uniwersalnym „dopalaczem” hostingu. Największy sens ma jako zaplecze trwałego object cache, czyli pamięci podręcznej wyników i obiektów, które WordPress może wykorzystać ponownie między kolejnymi żądaniami. Jeżeli problemem jest przeciążony PHP, niski limit CPU, wolny dysk albo zewnętrzne API, samo włączenie Redis może niewiele zmienić. Nie należy też mylić Redisa z OPcache, który przechowuje skompilowany kod PHP.

Przed wyborem hostingu z hasłem „Redis” warto więc ustalić trzy rzeczy: co dokładnie jest cache’owane, czy WordPress faktycznie korzysta z persistent object cache oraz czy to odpowiada wąskiemu gardłu Twojej strony.

Redis w WordPressie — co właściwie robi?

WordPress ma wbudowany mechanizm object cache. Domyślnie jest on nietrwały: dane przechowywane w nim podczas jednego żądania nie są zachowywane dla kolejnych odsłon. Persistent object cache wymaga dodatkowego backendu lub odpowiedniej integracji.

Redis może pełnić rolę takiego trwałego backendu. Zamiast ponownie pobierać lub przeliczać część danych przy każdym żądaniu, aplikacja może odczytać je z pamięci podręcznej. Oficjalny katalog WordPress opisuje wtyczkę Redis Object Cache jako persistent object cache backend oparty na Redis.

To nie oznacza, że Redis przechowuje całą stronę HTML ani zastępuje bazę danych. Cache powinien zawierać dane odtwarzalne; po jego wyczyszczeniu aplikacja powinna potrafić wygenerować je ponownie.

Object cache a page cache — to nie jest to samo

MechanizmCo zwykle zapisujeCo może ograniczyć
Page cacheGotową odpowiedź HTML lub jej odpowiednikLiczbę uruchomień PHP i zapytań potrzebnych do wygenerowania pełnej strony
Object cacheObiekty i wyniki używane przez aplikacjęPowtarzane odczyty/przeliczenia wykonywane podczas dynamicznego żądania
Opcode cacheSkompilowany kod PHPKoszt ponownej kompilacji skryptów PHP

Pełny page cache może sprawić, że część anonimowych odsłon w ogóle nie będzie wymagała pełnego wykonania WordPressa. Object cache działa natomiast wtedy, gdy PHP rzeczywiście obsługuje żądanie i korzysta z danych, które można pobrać z pamięci podręcznej.

Dlatego w lekkiej stronie wizytówkowej dobrze obsługiwanej przez page cache Redis może dać mniejszy efekt niż w serwisie dynamicznym, w którym każde żądanie wykonuje wiele operacji na bazie.

Kiedy persistent object cache może realnie pomóc?

Persistent object cache może ograniczyć liczbę powtarzanych odwołań do bazy danych i zmniejszyć część pracy potrzebnej do wygenerowania odpowiedzi. Największy sens ma wtedy, gdy aplikacja ponownie wykorzystuje dane, które można bezpiecznie przechować w cache.

Największego sensu można oczekiwać tam, gdzie:

  • wiele żądań jest dynamicznych i nie może być obsłużonych pełnym page cache,
  • WordPress lub wtyczki wielokrotnie odczytują te same dane,
  • baza danych jest istotną częścią czasu generowania odpowiedzi,
  • serwis ma powtarzalne, kosztowne odczyty, które aplikacja potrafi cache’ować,
  • ruch powoduje wiele podobnych zapytań do tych samych danych.

Nie oznacza to, że każdy taki serwis przyspieszy o konkretną wartość. Efekt zależy od kodu, wzorca ruchu, trafień cache i konfiguracji backendu.

WooCommerce i inne strony dynamiczne

Sklep ma więcej żądań, których nie można traktować jak zwykłej statycznej strony: koszyk, konto klienta, panel administracyjny, część operacji zamówień i personalizowane odpowiedzi wymagają wykonania aplikacji.

W takich miejscach object cache może być bardziej użyteczny niż na stronie, która większość ruchu obsługuje z pełnego page cache. WooCommerce i jego rozszerzenia mogą jednak korzystać z różnych warstw cache. WooCommerce Product Search obsługuje bezpośrednio Redis i Memcached, a osobno integrację z WordPress object cache. W tym rozszerzeniu Redis lub Memcached mogą więc działać jako własny mechanizm cache, a nie wyłącznie jako backend standardowego object cache WordPressa.

Nie należy jednak wyciągać z tego wniosku, że każdy sklep „wymaga Redis”. Najpierw trzeba ustalić, czy problemem rzeczywiście są powtarzalne operacje możliwe do cache’owania.

Kiedy Redis może prawie nic nie zmienić?

Redis nie usuwa limitów konta hostingowego. Jeżeli strona dobija do CPU, PMEM, PHP workers, EP, NPROC, I/O albo IOPS z powodów niezwiązanych z powtarzalnymi odczytami danych, object cache nie musi rozwiązać problemu.

Przykłady:

  • wtyczka wykonuje ciężkie obliczenia PHP przy każdym żądaniu,
  • serwis czeka na wolne zewnętrzne API,
  • import lub backup intensywnie korzysta z dysku,
  • brakuje PHP workers przy dużej liczbie równoległych żądań,
  • problemem jest źle działająca wtyczka albo bardzo ciężkie zapytanie, którego wynik nie trafia do object cache.

W takich przypadkach Redis może być obecny i działać poprawnie, a użytkownik nadal będzie odczuwał spowolnienia.

Jeżeli nie wiesz, gdzie jest wąskie gardło, zacznij od diagnostyki wolnego WordPressa, a przy problemach z równoległą obsługą żądań zobacz też poradnik o PHP workers.

Czy Redis zmniejsza zużycie CPU?

Może, ale nie jest to gwarantowane. Jeżeli cache eliminuje część zapytań i przeliczeń wykonywanych wcześniej przez aplikację, całkowity koszt obsługi żądania może spaść. Jeżeli jednak główny koszt powstaje gdzie indziej, użycie CPU może zmienić się niewiele.

Nie porównuj więc ofert na zasadzie „ma Redis = szybszy CPU”. Redis i limit CPU opisują różne warstwy. Hosting może mieć szybki backend cache, a jednocześnie niski limit CPU dla konta.

Przed zakupem sprawdź limity niezależnie. Pomaga w tym checklista limitów hostingu.

Czy Redis zmniejsza użycie I/O?

Jeżeli część danych jest odczytywana z pamięci cache zamiast z bazy lub systemu plików, pewne operacje dyskowe mogą zostać ograniczone. Nie oznacza to jednak, że Redis „usuwa problem I/O”. Mniejsza liczba odczytów z bazy nie musi przekładać się 1:1 na niższy odczyt I/O/IOPS widoczny dla konta hostingowego — sposób rozliczania bazy zależy od architektury operatora. Backupy, rozpakowywanie archiwów, generowanie miniatur, logi czy importy nadal mogą obciążać dysk.

Przy diagnozie trzeba więc rozdzielić ruch aplikacyjny od zadań wykonujących duże operacje na plikach. Różnicę między przepustowością dysku a liczbą operacji opisuje poradnik o I/O i IOPS.

Redis a Transients API WordPressa

WordPress używa Transients API do przechowywania danych tymczasowych. Bez persistent object cache transienty są zwykle przechowywane w bazie WordPressa. Gdy aktywny jest trwały backend object cache, mogą trafiać do niego zamiast do tabeli opcji. Przy aktywnym persistent object cache zmienia się więc miejsce przechowywania części danych tymczasowych.

To jeden z powodów, dla których Redis może ograniczać część ruchu do bazy. Nadal zależy to jednak od tego, jak konkretny motyw i wtyczki wykorzystują API WordPressa.

„Hosting ma Redis” — co to właściwie powinno znaczyć?

Sama obecność procesu Redis na serwerze nie oznacza jeszcze, że Twoja instalacja WordPressa z niego korzysta. Potrzebne są co najmniej dostęp do backendu, poprawna konfiguracja połączenia oraz integracja WordPressa z persistent object cache.

W praktyce zapytaj operatora:

  • czy Redis jest dostępny dla mojego pakietu,
  • czy jest to persistent object cache dla WordPressa,
  • czy aktywacja wymaga wtyczki lub wpisów konfiguracyjnych,
  • czy każda witryna ma własną przestrzeń/prefiks lub inne rozdzielenie kluczy,
  • czy operator narzuca limit pamięci lub inne ograniczenia Redis,
  • czy panel pozwala sprawdzić, że połączenie rzeczywiście działa.

Nie zakładaj też, że samo ustawienie WP_CACHE aktywuje Redis. Persistent object cache korzysta z osobnego mechanizmu, zwykle drop-in object-cache.php, i jest czym innym niż page cache wykorzystujący advanced-cache.php. Sama stała WP_CACHE nie zastępuje konfiguracji persistent object cache.

Przykład potwierdzonego parametru: dla planu Start Web Hosting dhosting.pl zapisany fakt potwierdza persistent object cache dla WordPressa. Sam ten parametr nie przesądza o wydajności całej strony. Sprawdź aktualne warunki planu (link partnerski).

Jak sprawdzić, czy WordPress naprawdę korzysta z Redis?

Najbezpieczniej sprawdzić status integracji w używanej wtyczce lub narzędziu operatora. Przykładowo Redis Object Cache ma własny ekran statusu i polecenia WP-CLI służące do diagnostyki połączenia. Wtyczka udostępnia status połączenia oraz komendy wp redis.

Samo zainstalowanie wtyczki nie wystarcza, jeżeli backend jest niedostępny albo konfiguracja połączenia jest błędna. Z drugiej strony nie należy „testować” produkcji przez przypadkowe czyszczenie wszystkich kluczy Redis, jeśli nie wiadomo, czy backend jest współdzielony z innymi aplikacjami.

Przy zakupie hostingu wystarczy ustalić, czy operator zapewnia aktywację i diagnostykę. Nie musisz wykonywać benchmarku Redis, aby ocenić samą dostępność funkcji.

Czy Redis zastępuje optymalizację bazy i kodu?

Nie. Cache może ukryć część kosztu powtarzalnych operacji, ale nie naprawia wadliwych zapytań, nadmiernej liczby wtyczek ani kodu, który wykonuje kosztowną pracę przy każdym żądaniu.

Jeżeli strona jest wolna również przy pustym cache albo problem pojawia się podczas operacji administracyjnych, importów i zadań cron, potrzebna może być szersza diagnostyka PHP, bazy i zasobów.

Redis traktuj więc jako jedną z warstw optymalizacji, nie jako zamiennik analizy źródła problemu.

Jak porównać dwa hostingi oferujące Redis?

Nie wystarczy zaznaczenie „Redis: tak”. Sprawdź:

  1. czy funkcja jest dostępna w konkretnym pakiecie,
  2. czy WordPress może użyć jej jako persistent object cache,
  3. jak wygląda aktywacja i diagnostyka połączenia,
  4. czy są limity pamięci lub liczby połączeń, jeśli operator je publikuje,
  5. czy wiele stron na jednym koncie jest odpowiednio rozdzielonych,
  6. jakie są niezależne limity CPU, RAM, PHP workers, I/O i IOPS,
  7. czy operator opisuje wsparcie dla WordPressa bez wymagania samodzielnej administracji Redis.

Jeżeli operator podaje tylko słowo „Redis” bez informacji o sposobie wykorzystania przez WordPressa, poproś o doprecyzowanie przed zakupem.

Gotowe pytanie do operatora

Czy w wybranym pakiecie Redis jest dostępny dla WordPressa jako persistent object cache? Proszę wskazać sposób aktywacji, wymagany plugin lub konfigurację, ewentualny limit pamięci oraz sposób potwierdzenia, że WordPress jest faktycznie połączony z backendem. Jeżeli na koncie działa kilka stron, proszę również wyjaśnić, w jaki sposób rozdzielane są ich klucze/cache.

To pytanie jest bardziej użyteczne niż samo „czy macie Redis?”, bo sprawdza możliwość realnego wykorzystania funkcji przez WordPressa.

Kiedy Redis warto traktować jako ważne kryterium hostingu?

Redis warto traktować jako istotny parametr wtedy, gdy serwis ma dużo dynamicznych żądań i rzeczywiście korzysta lub może korzystać z persistent object cache. Dla lekkiej strony obsługiwanej głównie przez page cache może mieć mniejsze znaczenie niż CPU, PHP workers, I/O, backup czy jakość obsługi.

Nie wybieraj więc hostingu wyłącznie dlatego, że ma Redis. Najpierw ustal charakter ruchu i źródło obciążenia, a potem sprawdź, czy object cache odpowiada na ten konkretny problem.