Object Cache w WordPressie przechowuje wyniki zapytań do bazy danych w pamięci RAM, dzięki czemu strona nie musi za każdym razem pobierać tych samych informacji z SQL. Domyślnie działa tylko podczas pojedynczego żądania. Po podłączeniu Redisa staje się trwały i może obsługiwać kolejne wejścia użytkowników.
Czym jest WP Object Cache i jak działa?
WordPress podczas generowania strony pobiera z bazy między innymi ustawienia, dane wpisów, metadane, informacje o użytkowniku i wyniki zapytań wykonywanych przez wtyczki. Przy rozbudowanej stronie takich operacji może być wiele, a część z nich powtarza się w różnych miejscach tego samego żądania.
WP Object Cache zapamiętuje wyniki tych operacji w pamięci podręcznej. Gdy WordPress ponownie potrzebuje tych samych danych, najpierw sprawdza cache. Jeśli znajdzie tam zapisany wynik, nie wysyła kolejnego zapytania SQL do bazy.
Można porównać to do pracy w bibliotece. Baza danych przypomina duży księgozbiór, w którym trzeba odszukać konkretną informację. Object Cache jest notatnikiem na biurku. Jeżeli odpowiedź została już zapisana, można z niej skorzystać od razu, bez ponownego przeszukiwania całego zbioru.
W cache mogą trafiać między innymi opcje WordPressa, dane użytkowników, metadane wpisów, wyniki zapytań WP_Query, informacje o aktywnym motywie oraz dane przechowywane przez Transients API.
Dlaczego domyślny object cache nie wystarcza?
Wbudowany mechanizm WordPressa jest nietrwały, czyli non-persistent. Pamięć podręczna powstaje na czas obsługi konkretnego żądania i jest usuwana po jego zakończeniu. Przy kolejnym wejściu, nawet na tę samą podstronę, WordPress ponownie wykonuje potrzebne zapytania.
Cache nadal ogranicza powtarzanie tych samych operacji w ramach jednego ładowania, ale nie dzieli danych między kolejnymi żądaniami ani użytkownikami. Trwały object cache wymaga zewnętrznego magazynu, takiego jak Redis lub Memcached.
| Cecha | Domyślny cache | Trwały cache z Redisem lub Memcached |
|---|---|---|
| Czas życia danych | Do zakończenia bieżącego żądania | Między kolejnymi żądaniami, zgodnie z konfiguracją |
| Dostępność | Tylko w ramach bieżącego procesu | Może być współdzielona między użytkownikami i żądaniami |
| Wpływ na bazę | Ogranicza powtórzenia podczas jednego ładowania | Ogranicza powtarzalne zapytania także przy kolejnych wejściach |
Jak Redis przyspiesza WordPressa?
Redis to magazyn danych działający w pamięci RAM. Przechowuje informacje w modelu klucz–wartość, dzięki czemu WordPress może szybko odczytać wcześniej zapisany wynik. Po pierwszym żądaniu dane trafiają do Redisa, a przy kolejnych żądaniach mogą zostać pobrane z pamięci zamiast z bazy.
Redis nie przechowuje automatycznie całej bazy danych. Trafiają do niego dane obsługiwane przez mechanizm object cache, czyli między innymi wyniki często wykonywanych zapytań. Może także przejąć dane z Transients API, które bez dodatkowej konfiguracji wykorzystuje bazę danych do tymczasowego przechowywania informacji.
Korzyści z trwałego object cache są najbardziej widoczne na stronach z kosztownymi zapytaniami, dużą liczbą użytkowników lub rozbudowaną logiką dynamiczną:
- Mniej zapytań SQL – WordPress rzadziej pobiera te same dane z bazy.
- Mniejsze obciążenie serwera bazodanowego – baza może obsługiwać inne operacje.
- Szybsze generowanie treści dynamicznych – szczególnie w panelu administracyjnym i sklepach WooCommerce.
- Lepsza obsługa większego ruchu – część danych jest dostępna bez ponownego odpytywania bazy.
Object Cache nie jest tym samym co page cache. Cache stron zapisuje gotowy kod HTML i może podać go odwiedzającemu bez ponownego uruchamiania WordPressa. Redis przyspiesza natomiast pracę aplikacji podczas generowania strony. Oba mechanizmy mogą działać jednocześnie. Jest to szczególnie przydatne przy koszyku, koncie klienta, wyszukiwarce, panelu administracyjnym i innych elementach zależnych od użytkownika.
Redis uzupełnia cache stron, a nie zastępuje go. Page cache przyspiesza dostarczanie gotowego HTML, natomiast object cache ogranicza pobieranie danych z bazy podczas działania WordPressa.
Jak wdrożyć trwały object cache?
Dokładne nazwy opcji zależą od serwera i użytej wtyczki, ale uniwersalny proces wygląda następująco:
- Aktywuj usługę Redis na serwerze – potrzebujesz adresu hosta, portu i ewentualnego hasła dostępowego.
- Zainstaluj wtyczkę – na przykład Redis Object Cache. Inne narzędzia, takie jak W3 Total Cache lub LiteSpeed Cache, również mogą obsługiwać Redis.
- Skonfiguruj połączenie w pliku wp-config.php – wpisz parametry wskazane przez dostawcę serwera i umieść je przed linią kończącą edycję pliku.
- Włącz object cache i sprawdź status – wtyczka powinna potwierdzić aktywne połączenie oraz poprawnie działający plik integracyjny.
Jeśli po konfiguracji strona wyświetla nieaktualne dane, można wyczyścić zawartość object cache. Nie usuwa to danych z bazy, lecz tylko zapisane kopie. Przy kilku instalacjach WordPressa korzystających z jednego Redisa każda strona powinna mieć własny prefiks kluczy, aby dane się nie mieszały.
Największy efekt uzyskasz wtedy, gdy problemem są powtarzalne i kosztowne zapytania do bazy. Na prostej stronie o małym ruchu różnica może być niewielka, dlatego działanie cache najlepiej ocenić na podstawie czasu generowania strony, liczby zapytań SQL i obciążenia serwera.
Trwały object cache z Redisem odciąża bazę danych i przyspiesza dynamiczne elementy WordPressa, ale pełny efekt daje dopiero razem z właściwie skonfigurowanym cache’owaniem stron.