Memcached to In-Memory Cache, czyli pamięć podręczna przechowująca dane bezpośrednio w pamięci RAM serwera. Jak powszechnie wiadomo, pamięć RAM charakteryzuje się o kilka rzędów krótszym czasem dostępu do pamięci z powodu bezpośredniego (a nie sekwencyjnego) dostępu do danych. Pisałem już jak zainstalować memcached na serwerze i jak korzystać z niego w aplikacjach PHP. W tym artykule pokażę jak wykorzystać działający serwer memcached i rozszerzenie PHP w środowisku WordPress.

WordPress od bardzo wczesnych wersji posiada wbudowaną obsługę Object Cache bez konieczności aktywowania żadnych wtyczek. Aby jednak w pełni wykorzystać jego zalety i znacząco przyspieszyć WordPressa od wersji 2.5 musimy zainstalować jedną z wtyczek, która integruje mechanizm WP_Object_Cache z dostępnymi systemami Persistent Caching. Jednym z nich jest właśnie tytułowy memcached.

Memcached to serwer czyli usługa działająca na serwerze. Aby skorzystać z jego dobrodziejstw w aplikacji PHP potrzebujemy także mieć włączone rozszerzenie w środowisku PHP, w którym jest zainstalowany WordPress. Oba elementy są konieczne aby system pamięci podręcznej mógł wspierać działanie WordPressa. O ile większość hostingów WordPress posiada aktywne rozszerzenie memcached – czyli tak jakby klienta dla serwera memcached – o tyle nie wszystkie hostingi posiadają zainstalowany lokalny serwer Memcached. Istnieją wtedy trzy rozwiązania:

  • zainstalować serwer memcached na aktualnym serwerze, który hostuje WordPressa,
  • uruchomić osobny serwer i to na nim zainstalować serwer memcached,
  • wykorzystać usługę chmurową pamięci podręcznej kompatybilną z Memcached.

Jak sprawdzić czy WordPress może skorzystać z Memcached?

Z powodu wymogów opisywanych we wstępie, przed włączeniem Memcached warto się upewnić, czy mamy dostęp do tego rozszerzenia. W artykule o debugowaniu WordPressa, pisałem o wtyczce Query Monitor, która przydawała nam się do monitorowania wydajności kodu i wtyczek WordPress. Potrafi ona też dokonać detekcji czy WordPress korzysta z Object Cache, a w przypadku kiedy system ten nie jest wykorzystywany, podpowie nam czy rozszerzenie Memcached jest dostępne na naszym serwerze. Wystarczy zainstalować wtyczkę Query Monitor i otworzyć główny panel w tzw. Kokpicie panelu administracyjnego:

Query Monitor – informacja, że Object Cache nie jest wykorzystywany ale rozszerzenie Memcached jest dostępne na serwerze.

Instalacja memcached

Jeżeli nasz WordPress nie wykorzystuje Object Cache, a nie ma jednocześnie informacji o dostępnym rozszerzeniu memcached to zapytaj dostawcę hostingu czy może doinstalować takie rozszerzenie oraz jak skorzystać z memcached. Możemy wtedy otrzymać adres IP i port odrębnej maszyny, która będzie nam służyć jako serwer pamięci podręcznej. Może się okazać, że aby skorzystać z memcached musimy przejść na inny plan hostingowy lub po prostu dokupić serwer jako dodatkową usługę.

Żadnego problemu nie będą mieli natomiast posiadacze serwerów VPS, ponieważ zarówno serwer jak i rozszerzenie php8-memcached można zainstalować za pomocą jednej komendy.

sudo apt-get install memcached php8-memcached

Domyślna konfiguracja memcached spokojnie wtedy wystarcza do obsługi zwykłej strony WordPress lub sklepu WooCommerce. Za pomocą komendy status możemy sprawdzić, czy serwer działa:

sudo /etc/init.d/memcached status

Aby sprawdzić czy rozszerzenie memcached działa, należy podejrzeć standardowe wyjście skryptu phpinfo:

<?php echo phpinfo();
Informacja o wersji memcached w phpinfo().

Włączenie obsługi memcached w WordPress

Aby WordPress mógł korzystać z memcached możemy zainstalować jedną z polecanych w dokumentacji WordPressa wtyczek:

lub wybrać dowolną wtyczkę, która wyświetla się nam na słowo kluczowe memcached. Może się okazać, że już korzystasz z W3 Total Cache i nie trzeba instalować nowej wtyczki w Twoim WordPressie. Ja dla odmiany zdecyduję się na Memcached Redux, bo jest lekka i wyspecjalizowana do tego celu. Instaluję wtyczkę ale bez aktywacji. Aktywacja wtyczki spowoduje błąd o czym jesteśmy informowani w instrukcji obsługi.

Kopiuję plik:

/wp-content/plugins/memcached-redux/ object-cache.php

do lokalizacji:

/wp-content/

Podobną procedurę musimy wykonać w przypadku wtyczki Memcached Object Cache.

Od tej chwili Memcached Object Cache powinien działać. Możemy to sprawdzić w Query Monitor:

Query Monitor – informacja, że Object Cache jest wykorzystywany. Nawet tuż po instalacji widać, radykalnie lepsze parametry wydajnościowe.

Jak widać, WordPress wykonuje mniej zapytań do bazy MySQL (zmiana z 223 na 55 to naprawdę sporo) a czas generowania strony jest radykalnie krótszy. Jak widać Cache-to-Hit ratio jest na bardzo wysokim poziomie

Alternatywy dla Memcached

Memcached to nie jedyna baza NoSQL, którą możemy wykorzystać jako warstwa Cache w środowisku WordPress. Podobną funkcję może pełnić bardzo podobny (a nawet bardziej rozbudowany) Redis. Preferuję jednak memcached ze względu na prostotę instalacji, większą kompatybilność, wielowątkową architekturę, niższe wymagania systemowe i mniejszą konsumpcję pamięci, która jest bardzo istotna w nisko kosztowych konfiguracjach VPS.

Podsumowanie

Jak widać, warto włączyć system Memcached w WordPressie. Pamięć podręczna in-memory zapewni nie tylko szybsze działanie naszej strony internetowej dla użytkowników strony (lub klientów sklepu WooCommerce) ale także skróci czas generowania front-endu podczas korzystania z panelu administracyjnego. Zwiększone user experience naszego serwisu i wygodna praca personelu będzie się wiązać z samymi korzyściami. Najlepsze jest to, że aktywacja memcached trwa kilka chwil i nie wymaga czasochłonnej konfiguracji.

Źródła:

Oceń artykuł na temat: Memcached w WordPressie – jak włączyć i czy warto?
Średnia : 4.9 , Maksymalnie : 5 , Głosów : 13