Standardowe podłączenie WordPressa do pamięci podręcznej Redis (lub Valkey) to absolutna podstawa przy optymalizacji czasu ładowania strony. Przeniesienie zapytań do bazy danych z dysku do szybkiej pamięci RAM odciąża procesor i drastycznie zmniejsza TTFB (Time to First Byte).
W domyślnej konfiguracji WordPress przetrzymuje jednak dane w formie czystego, rozwlekłego tekstu. Aby w pełni wykorzystać zasoby serwera – zwłaszcza gdy narzucamy twarde limity pamięci na instancję (np. 128 MB w architekturze BSNM) – musimy wdrożyć serializację binarną i kompresję w locie.
W tym poradniku nie tylko pokażę Ci, jak to zrobić. Obnażę również mit, przez który tysiące administratorów żyje w przeświadczeniu, że ich serwer jest zoptymalizowany.
Czym są igbinary i zstd?
Gdy WordPress zapisuje skomplikowane obiekty (np. wyniki zapytań, opcje, transienty) do pamięci Redis, musi je najpierw „przetłumaczyć” na format, który można zapisać.
igbinary: Zamiast używać standardowej funkcji PHP serialize(), która generuje długie, czytelne dla człowieka ciągi tekstowe, konwertuje dane do zwartej postaci binarnej.
zstd (Zstandard): To nowoczesny algorytm kompresji opracowany przez Facebooka. Charakteryzuje się fenomenalnym stosunkiem stopnia kompresji do prędkości działania.
Zalety takiego duetu:
Oszczędność RAM: Zapakowane i skompresowane dane zajmują często od 40% do 50% mniej miejsca w pamięci Redis/Valkey.
Szybszy transfer: Mniejsza paczka danych szybciej wędruje przez gniazda systemowe (sockety) lub sieć lokalną między PHP a Redisem.
Większa pojemność cache: W tym samym limicie 128 MB RAM zmieścisz niemal dwukrotnie więcej obiektów.
Potencjalne wady:
Trudniejsze debugowanie: Zaglądając bezpośrednio do bazy Redis (np. przez redis-cli), zobaczysz ciągi znaków binarnych zamiast czytelnego tekstu.
Wymagania systemowe: Standardowy moduł php-redis z repozytoriów często nie ma wkompilowanej obsługi tych rozszerzeń. Wymagane jest użycie zoptymalizowanej paczki np. z repozytorium BSNM.
Instalacja modułów na serwerze (FreeBSD)
Zanim skonfigurujesz WordPressa, Twój serwer musi posiadać odpowiednio skompilowany moduł phpredis. Jak opisywałem w moim artykule o instalacji tych paczek z Poudriere, przygotowałem specjalne repozytorium dla FreeBSD 15.x do tego celu.
Konfiguracja wtyczek
Jeśli poszukasz w sieci poradników, 99% z nich każe Ci zainstalować najpopularniejszą darmową wtyczkę Redis Object Cache (od Tilla Krüssa) i dodać do pliku wp-config.php te linie:
define( 'WP_REDIS_CLIENT', 'phpredis' );
define( 'WP_REDIS_SERIALIZER', 'igbinary' );
define( 'WP_REDIS_COMPRESSION', 'zstd' );
Wydaje się proste. Panel wtyczki zapali się na zielono, a Ty z uśmiechem uznasz, że wdrożyłeś kompresję binarną. Niestety, padłeś ofiarą sztuczki monetyzacyjnej.
Przestańmy ufać zielonym lampkom w WordPressie i odpytajmy fizyczną pamięć RAM (w moim przypadku to serwer Valkey):
bastille cmd klatka_kliencka_valkey /usr/local/bin/valkey-cli -h ip_redis/valkey -a TwojeHaslo --raw GET "bsnm_www_jail_1:options:alloptions"
klatka_kliencka_valkey, ip_redis/valkey, TwojeHaslo podmień na nazwę własnej klatki z valkey lub redis, ip tej klatki oraz wpisz hasło do własnego redis lub valkey.
Wynik tego polecenia na darmowej wtyczce to piękny, czytelny ciąg znaków, zaczynający się od a:4:{i….
To oznacza, że dane są nadal zwykłym tekstem. Dlaczego? Ponieważ popularne darmowe wtyczki po cichu ignorują te sprzętowe flagi, aby nakłonić Cię do zakupu płatnych wersji Pro, które dopiero zwalniają tę blokadę.
Omijamy system. Prawdziwe wdrożenie sprzętowe
Aby nasza infrastruktura BSNM mogła rozwinąć pełne skrzydła bez płacenia absurdalnych kwot, musimy wyrzucić komercyjne rozwiązania i uciec się do własnych modyfikacji otwartoźródłowej wtyczki WP Redis (od Pantheon Systems).
- Usuń starą wtyczkę do cache i wyczyść z pliku wp-config.php wszystkie zmienne WP_REDIS_.
- Zainstaluj z repozytorium WordPressa darmową wtyczkę WP Redis (Pantheon).
- Do pliku wp-config.php dopisz jej natywną konfigurację:
// --- USTAWIENIA OBJECT CACHE (PANTHEON) ---
define( 'WP_CACHE', true );
define( 'WP_CACHE_KEY_SALT', 'twoj_prefiks:' ); // Dwukropek jest ważny
$redis_server = array(
'host' => 'twój_ip_valkey/redis',
'port' => 6379,
'auth' => 'wojeHaslo',
'database' => 0,
'timeout' => 1000, // Czas na połączenie w milisekundach (1000 ms = 1 sekunda)
'retry_interval' => 100, // Czas między próbami ponownego połączenia w ms
);
Aktywuj wtyczkę w panelu i upewnij się, że „Object Cache” jest „Enabled” (wymusza to skopiowanie pliku object-cache.php do katalogu wp-content).
Wstrzyknięcie naszych optymalizacji (Hack)
nano /usr/local/www/katalog_strony/public_html/wp-content/object-cache.php
Szukamy w nim funkcji perform_client_connection. Na samym końcu tej funkcji, tuż przed wierszem return true;, wklejamy twarde wywołanie naszych rozszerzeń PHP:
// --- BSNM CUSTOM INJECTION: Wymuszenie kompresji i serializacji ---
if ( defined( 'Redis::OPT_SERIALIZER' ) && defined( 'Redis::SERIALIZER_IGBINARY' ) ) {
$redis->setOption( Redis::OPT_SERIALIZER, Redis::SERIALIZER_IGBINARY );
}
if ( defined( 'Redis::OPT_COMPRESSION' ) && defined( 'Redis::COMPRESSION_ZSTD' ) ) {
$redis->setOption( Redis::OPT_COMPRESSION, Redis::COMPRESSION_ZSTD );
}
// ------------------------------------------------------------------
return true;
Zapisujemy plik. Opróżniamy starą pamięć na serwerze Valkey/Redis komendą FLUSHALL i odświeżamy przeglądarkę, aby wygenerować nowy cache.
Możesz także pobrać gotowy plik z naniesioną już modyfikacją Pobierz gotowy object-cache.php
Ostateczny dowód poprawnego wdrożenia optymalizacji
Czas powtórzyć nasze polecenie z terminala FreeBSD, wymuszając surowy odczyt klucza wp-options:
bastille cmd klatka_kliencka_valkey /usr/local/bin/valkey-cli -h ip_redis/valkey -a TwojeHaslo --raw GET "bsnm_www_jail_1:options:alloptions"
Tym razem na ekranie nie zobaczysz czytelnego tekstu. Zobaczysz gigantyczną ścianę chaotycznych znaków, krzaków ASCII i czegoś, co wygląda jak uszkodzony plik:
(/j>*aE@k0…`
To nie jest błąd. To jest idealnie zserializowany, skompresowany algorytmem Zstandard pakiet pamięci RAM. Twój serwer Valkey/Redis na platformie BSNM właśnie wszedł na najwyższe, sprzętowe obroty wydajności.
Weryfikujcie to, co widnieje w „zielonych panelach” wtyczek WordPressa, zaglądając w fizyczne procesy pamięci. To jedyna gwarancja prawdziwej optymalizacji.
