Mentionsy Mentionsy
Rób WordPressa
Rób WordPressa

188 - Jak działa Object Cache w WordPressie i dlaczego Redis to game changer

30.10.2025 ·27 min 40 s · 1 rozdział · 1 sponsor

🎧 W tym odcinku rozbieram na czynniki pierwsze Object Cache w WordPressie - czym jest, jak działa i dlaczego Redis może diametralnie przyspieszyć Twoją stronę. Opowiadam też o prawdziwym przypadku z produkcji, gdzie niepoprawna konfiguracja Redisa spowodowała cofnięcie danych w WordPressie o… dwa tygodnie!Jeśli chcesz lepiej zrozumieć, jak działa cache w WordPressie i jak realnie przyspieszyć swoje projekty - ten odcinek jest właśnie dla Ciebie.🔧 Partnerem odcinka jest Cyberfolks - dostawca hostingu i domen idealnych pod WordPressa.

Rób WordPressa to podcast, w którym znajdziesz inspiracje, porady i rozmowy z ludźmi ze świata WordPressa. Cześć. W tym odcinku podcastu zajmiemy się tematem Object, Cache i Redisa w WordPressie. Zanim jednak przejdziemy do głównego tematu odcinka, krótka chwila dla partnera mojego podcastu marki Cyberfolks, która dostarcza domeny i hosting pod WordPressa. Partnerem dzisiejszego odcinka jest marka Cyberfolks. Twój ekspert od hostingu i domen. Jeśli szukasz hostingu dla swojej strony na WordPressie to polecam to miejsce. Pamiętaj, że z kodem podcast dostaniesz 20% rabatu na hosting WordPress. Jeśli pracujesz z WordPressem od jakiegoś czasu, no to myślę, że na pewno zetknąłeś się z takimi wtyczkami jak choćby WP Super Cache czy tym podobne wtyczki, które pozwalają na tzw.

0:20 · Cyberfolks 6

No to potem jeśli w trakcie renderowania tej strony te informacje są gdzieś tam wykorzystywane. No to wtedy one już nie są pobierane z bazy danych, nie jest wykonywany żaden select na bazie danych, tylko WordPress korzysta z tego Object Cache'a i z tych danych, które pobrał gdzieś tam za pierwszym razem. Tylko problem jest taki, że właśnie w tym domyślnym trybie po zakończeniu requestu te dane znikają, bo ten cache jest trwały tylko w obrębie jednego requestu, czyli jeśli wchodzimy sobie na stronę główną, no to on się gdzieś tam buduje na początku i możemy go wykorzystać tylko podczas renderowania tej strony głównej. Z tego Object Cache API korzysta bardzo dużo o takich standardowych, wbudowanych funkcji, choćby takich odpowiadających za pobieranie danych użytkowników, jakichś metadanych, postów, czy opcji WordPressa z tabeli WP Options.

Ogólnie rzecz biorąc jeśli masz tylko taką możliwość jeśli na hostingu ten Redis jest dostępny nie musisz za niego dopłacać czy aktywować jakiegoś tam wyższego pakietu. No to zdecydowanie polecam, bo można powiedzieć, że ma on same zalety. Nie wpływa jakoś tam negatywnie na pracę WordPressa, wręcz przeciwnie, przyspiesza ją. Szczególnie ważne będzie to na stronach, które nie za bardzo możemy scachować w taki klasyczny sposób za pomocą jakiegoś tam WP Super Cache czy podobnego pluginu czy np. Names mentioned in the video.

No a Redis jeśli widział ten snapshot w odpowiednim katalogu, no to niewiele myśląc ładował go przy każdym załadowaniu Redisa na nowo, czy przy każdym restarcie usługi. I tu się już dosyć szybko potem wyjaśniło, no nie dziwne, że na przykład Dane typu data, która była trzymana w tabeli wp-options cofała się o dwa tygodnie, no bo to był ten moment, w którym ten snapshot wykonał się po raz ostatni i Redis ładował to w tego pliku i w momencie, w którym WordPress pytał o tą opcję, no to nie odpytywał bazy danych, gdzie była poprawna data, tylko odpytywał Redisa i Redis zwracał właśnie tą datę tego snapshota. Podobnie było zresztą z tym hasłem użytkownika, po prostu w Redisie były zapisane dane tego użytkownika i ten snapshot był wykonany w momencie, gdy użytkownik miał jeszcze stare hasło, po czym po zmianie hasła on się mógł zalogować tam danego dnia, ale następnego dnia

Ja w ostatnich dniach dosyć mocno korzystałem z tego, podczas optymalizacji takiego dosyć trudnego przypadku WordPressowego, gdzie trafiła do nas strona, która była skrajnie niewydajna i pewne elementy, tak jak choćby generowanie nawigacji, były zaimplementowane w taki sposób, że generowały ogromny narzut i dzięki temu, że skasowałem sobie pewne rzeczy za pomocą tego Object Cache API, oczywiście na stronie pracował Redis, no to Przyspieszyłem ładowanie tej strony. I myślę, że takie trzy najczęściej używane funkcje, z których będziesz korzystał podczas pracy z tym Object Cache API będzie to WP Cache Set, WP Cache Get i WP Cache Delete. Parametry są dosyć proste.

No i naturalnie coś Redis musiałby wyrzucić z tego RAMu, żeby zwolnić sobie miejsce na nowe dane. No to tak to będzie działało, ewentualnie jeśli ustawimy sobie tam jakiś czas, no to ten cache będzie trzymany przez odpowiednią ilość sekund. WP Cache Get, no analogicznie do innych tego typu funkcji, jest to po prostu pobieranie tych danych, które zapisaliśmy za pomocą WP Cache Set, czyli WordPress zwraca nam dokładnie to, co zapisaliśmy sobie wcześniej w kodzie i WP Cache Delete usuwamy sobie to wszystko, co siedzi w tym Object Cache. I taki prosty przykład do czego można to użyć w swojej wtyczce. Załóżmy, że masz jakąś wtyczkę, która bazuje na własnych typach postów i na przykład wyświetlasz jakiś tam widget na stronie, czy gdzieś tam te informacje są wyświetlane, ale powiedzmy to zapytanie jest zbudowane z kilku warunków opartych o pola postmeta.

Co jak wiemy, w WordPressie nie jest najszybszą opcją na wyciąganie danych, no ale powiedzmy, że takie są wymagania biznesowe, ciężko to obejść, a był to najprostszy sposób na zaimplementowanie jakiegoś mechanizmu. No to używamy sobie tego Object Cache'a w ten sposób, że najpierw pobieramy sobie za pomocą wp-cache-get te dane, które powinny się znajdować w cache'u. Jeśli nie ma tych danych, no to oczywiście zwróci nam nula. W oparciu o to, potem sobie pobieramy te posty, wykonujemy to jedno skomplikowane zapytanie, które powiedzmy jest długie i czasochłonne i po pobraniu zapisujemy sobie to za pomocą funkcji wp-cache-set i potem przy kolejnych wywołaniach strony, jeśli zajdzie potrzeba wyciągnięcia tych danych, to już WordPress nie będzie odpytywał bazy danych, no bo funkcja wp-cache-get zwróci nam te dane i to zapytanie do bazy zostanie pominięte, no bo oczywiście powinniśmy sobie tam zaimplementować

Pokazano wszystkie 7 dopasowań. Transkrypcja generowana automatycznie i niesprawdzana ręcznie — może zawierać błędy.