Redis to magazyn danych, który efektywnie przyspiesza działanie stron internetowych. Skorzystanie z niego w ramach WordPressa dotychczas wymagało dodatkowych ustawień na serwerze, instalowania odpowiednich wtyczek w skrypcie i ich konfiguracji. Te czasy odchodzą w zapomnienie! Od dziś uruchamiając swój ulubiony CMS na serwerach CloudHosting WordPress, otrzymujesz gotową stronę, z włączonym Redisem i automatycznie skonfigurowaną wtyczką W3 Total Cache. Sprawdź koniecznie, jakie korzyści przyniesie to Twojej stronie WWW!
Przyspieszanie WordPressa z Redisem
Istnieje wiele wtyczek zwiększających szybkość stron WWW zbudowanych z użyciem WordPressa. Działanie tych wtyczek polega głównie na przyspieszaniu generowania interfejsu witryny, poprzez przechowywanie poszczególnych stron w wersji statycznej. Jest to możliwe tylko wówczas, gdy strony te nie uruchamiają żadnego kodu, czyli zawsze wyświetlana jest na nich ta sama treść. Właściciele witryn zbudowanych w oparciu o WordPressa często jednak korzystają z możliwości, jakie daje interakcja z użytkownikiem, nie mówiąc już o wykorzystywaniu WordPressa do budowy sklepów internetowych. W takich przypadkach wtyczki buforujące podstrony w formie statycznych plików po prostu nie znajdują zastosowania. Z pomocą przychodzi wówczas Redis, pamięć podręczna działająca po stronie serwera, która została udostępniona w ramach usług hostingowych nazwa.pl we wrześniu 2020 roku.
Redis to magazyn struktury danych, który doskonale sprawdza się do cachowania zapytań z bazy MariaDB. Do swojej pracy wykorzystuje pamięć RAM, więc jego działanie nie jest zależne od szybkości wykonywania operacji odczytu i zapisu na dyskach, które w naturalny sposób wpływają na wydajność przetwarzania informacji.
WordPress wykorzystuje bazy danych do buforowania pewnych stałych elementów aplikacji, których generowanie może wpływać na czas wczytywania się strony. Umieszczanie cache w ramach tradycyjnej bazy danych, która dodatkowo przetwarza zwykłe zapytania związane ze stronami WWW, stałoby się więc wąskim gardłem samej aplikacji. I w tym miejscu z pomocą przychodzi właśnie Redis, który wyręcza dyskową bazę danych z konieczności dostarczania treści wymaganych do wygenerowania strony.
Jak działa Redis?
Załóżmy, że mamy do czynienia z zupełnie nową stroną WWW wykonaną w oparciu o WordPress. Wchodząc na tę stronę, do bazy danych MariaDB wysyłane są odpowiednie zapytania SQL. Baza danych zwraca do serwera wynik tych zapytań. Ten wynik jest automatycznie buforowany przez Redisa, dzięki temu, kiedy ktoś inny zechce wejść na tę samą stronę, odpowiedzi na zapytania nie będą pochodziły już z bazy danych, ale bezpośrednio z Redisa.
Wiadomym jest, że strony oparte o system zarządzania treścią mogą ulegać ciągłym zmianom. W takim przypadku, gdy określone informacje w bazie ulegną zmianie, odpowiadająca im wartość w ramach Redisa będzie od razu unieważniona. Zapobiega to przekazywaniu nieprawidłowych danych z pamięci buforowej. W takim przypadku wynik pierwszego zapytania o stronę po zmianie zostanie pobrany z bazy danych i na tej podstawie będzie on zapamiętany ponownie w Redisie.
CloudHosting WordPress i automatyczna konfiguracja Redisa
Na tradycyjnym hostingu użytkownicy WordPressa nie tylko muszą samodzielnie wykonać jego instalację na serwerze, ale dodatkowo muszą także sami zadbać o optymalizację swojego CMS-a. O ile taki tradycyjny hosting, być może, zaoferuje Redisa, trzeba będzie go jeszcze dodatkowo skonfigurować, wgrywając odpowiednie wtyczki i modyfikując skomplikowane ustawienia. Pochłania to cenny czas, który można byłoby z powodzeniem spożytkować już na samą pracę nad budową strony.
Zupełnie inaczej jest na serwerach CloudHosting WordPress. Redis jest tu automatycznie włączany w trakcie procesu instalacji samego CMS-a. Od momentu uruchomienia instalatora WordPress do momentu otrzymania gotowej, skonfigurowanej aplikacji nie mija nawet minuta!
Redis na CloudHostingu WordPress od nazwa.pl wykorzystuje wtyczkę W3 Total Cache. Jest to jeden z najbardziej popularnych dodatków do WordPressa, prawdziwy kombajn możliwości, jeżeli chodzi o optymalizację działania stron opartych o ten system zarządzania treścią. Dzięki W3 Total Cache, Redis staje się funkcjonalnością podobną do odwrotnego proxy, realizując buforowanie aktualnych operacji na bazie danych w ramach pamięci RAM.
Czy Redis faktycznie jest skuteczny?
Przyjrzyjmy się, czy Redis jest rzeczywiście skuteczny. Zrealizujemy w tym celu kilka testów z dwoma różnymi instalacjami WordPressa. Do pierwszego testu użyjemy CMS-a w wersji Strona WWW, zainstalowanego poprzez panel Active.admin. Przypominamy, że mamy w nim już włączony i odpowiednio skonfigurowany Redis.
Pierwszy test obejmie badanie ilości zapytań do bazy danych. Wykonamy go poprzez wywołanie wbudowanej w WordPress funkcji get_num_queries(). W tym celu, po instalacji WordPressa przez panel Active.admin, logujemy się na serwer FTP, przechodzimy do katalogu naszego domyślnego motywu Twenty Twenty One i w pliku footer.php na samym dole, przed znacznikiem </body>, dodajemy:
<p>Ilość zapytań do bazy MariaDB: <?php echo get_num_queries();?></p>
Dzięki wywołaniu powyższego kodu, wchodząc na naszą stronę w WordPressie, na jej dole pojawi się wynik ilości zapytań SQL, które wykonał WordPress. Za pierwszym razem wynik nie będzie uwzględniał cachowania Redis, gdyż zgodnie z tym, co sobie wcześniej powiedzieliśmy, dane muszą najpierw trafić z bazy danych do Redisa, a dopiero przy kolejnych wywołaniach strony będą z niego odczytywane.
Przy pierwszym wejściu na stronę uzyskujemy wynik 39 zapytań SQL. Odświeżamy zatem stronę, po czym wynik wynosi tylko 6! Zatem Redis zmniejszył liczbę zapytań do bazy danych z 39 do 6, czyli o prawie 85%! A mówimy tu o WordPressie praktycznie bez treści, który dopiero został zainstalowany.
Na potrzeby naszych testów przyjrzyjmy się jeszcze rozbudowanemu sklepowi opartemu na WooCommerce. Nie zmieniamy sposobu testowania ilości zapytań do bazy danych. Tutaj także wstawiamy na końcu pliku footer.php wykorzystywanego motywu odwołanie do wbudowanej w WordPress funkcji get_num_queries(). Aby bardziej obciążyć zapytaniami nasz sklep, instalujemy także przykładowe dane do WooCommerce.
Czas na test. Pierwsze uruchomienie sklepu daje nam wynik 97 zapytań SQL. Odświeżenie strony powoduje odczytanie danych z Redisa. Liczba zapytań SQL zmniejsza się z 97 do 6, zatem o ponad 93%!
Pozostańmy jeszcze przy naszym sklepie WooCommerce. Zasymulujemy teraz ruch na stronie z użyciem aplikacji Apache JMeter. Stworzyliśmy w tym celu scenariusz wirtualnego użytkownika, który po wejściu na stronę przeglądnie 10 stron produktowych, następnie 5 produktów z różnych stron produktowych (innych niż te przeglądnięte na początku) doda do koszyka. Nie badamy już jednak samej ilości zapytań do bazy danych MariaDB, ale sprawdzamy średni czas oczekiwania na odpowiedź serwera w związku z wykonywanymi czynnościami.
Na wykresie przedstawiliśmy otrzymany uśredniony wynik z Redisem i bez Redisa. Jak widać, wykorzystanie Redisa pozwoliło na obniżenie czasu potrzebnego na wygenerowanie stron, w ramach przeprowadzonego testu, średnio o prawie 38%. Można śmiało powiedzieć, że każdy użytkownik korzystający z Internetu odczuje tak znaczący wzrost szybkości działania strony WWW, którą odwiedza. Nikogo nie trzeba przekonywać do tego, że klient, który jest zadowolony z szybkości działania sklepu internetowego, dużo chętniej dokonuje za jego pośrednictwem zakupów. Zatem wzrost szybkości działania strony WWW, w przypadku e-commerce, będzie wprost przekładał się na większe zyski z prowadzonej działalności. Pamiętajmy, że także zwykłe strony WWW, które nie są sklepami, mogą zarabiać dzięki umieszczonym na nich reklamom. Takie strony, które pracują bardzo szybko, będą dużo częściej odwiedzane i zyskają stałych czytelników, w porównaniu do tych, które działają zwyczajnie wolno.
Rozwijamy się razem!
Jeśli jesteś webmasterem i potrzebujesz dodatkowych funkcjonalności do działania swoich projektów albo chcesz przetestować nowe rozwiązania, które niebawem wdrożymy, skontaktuj się z naszym Działem Rozwoju pod adresem rnd@nazwa.pl.