Envato Elements - pobierasz co chcesz, ile chcesz

Jakieś 3-4 miesiące temu na WebInsider.pl i kilku innych stronach rozpocząłem „wielki test bezpłatnych wtyczek cache” do WordPressa, w trakcie którego miałem wybrać kilka moim zdaniem najlepszych, by opisać je w zestawieniu podobnym do poradnika dotyczącego walki ze SPAMem w komentarzach (WordPress).

W tracie testu szybko się okazało, że większość wtyczek sprawia jakieś problemy – mniejsze, lub większe, ale jednak. Czasem były to jakieś niuanse związane z prawidłową konfiguracją, innym razem problemy z prawidłowym wyświetlaniem niektórych elementów strony.

W każdym razie po krótszych lub dłuższych testach kolejne wtyczki wylatywały z zestawienia, aż w końcu stwierdziłem, że zamiast „wielkiego testu” przedstawię jedną wtyczkę, którą właściwie wystarczy tylko włączyć, nawet nie trzeba konfigurować by wszystko działało jak należy…

Cache Enabler – WordPress Cache

Decyzja by wpis ten ograniczyć tylko do jednej wtyczki (Cache Enabler od KeyCDN) była dość łatwa – pozostałe wtyczki albo z jakiś przyczyn sprawiały problemy na niektórych stronach, albo ich prawidłowa konfiguracja by uniknąć problemów, czy też umożliwić prawidłowe działanie niektórych/innych wtyczek (np. WooCommerce) często wymagała przetestowania masy ustawień.

A uznałem, że bardziej zaawansowani z Was, co mieliby szansę wycisnąć ostatnie soki z tego typu kombajnów zapewne już je znają, a do tego już w internecie jest pełno tego typu zestawień – często z bardzo szczegółowymi raportami, i pewnie nie napisałbym wiele/nic nowego w temacie…

Dodatkowo w takim porównaniu/zestawieniu wielu (tego typu) wtyczek być może uciekła by Wam ta, o której postanowiłem dziś napisać.

Prosta i skuteczna

Wtyczka Cache Enabler ujęła mnie na tyle prostą konfiguracją, że w wielu przypadkach właściwie nie trzeba było nic konfigurować – testowaliśmy wtyczkę np. na instalacji WordPress Multisite, gdzie na jednej instalacji WordPressa działa aktualnie ponad 80 stron, i cała konfiguracja sprowadziła się właściwie tylko do zainstalowania i uruchomienia wtyczki centralnie (tylko na jednej stronie wymagana była zmiana ustawień – dodanie kilku stron do wyjątków, by nie były keszowane).

Ustawienia wtyczki

W ustawieniach wtyczki znajdziecie chyba tylko niezbędne elementy/opcje, ale dzięki temu wdrożenie keszowania na stronie powinno być ekstremalnie szybkie, a zarazem nie powinno sprawić problemów nawet mniej doświadczonym właścicielom stron:

keycdn_cache-enabler_wordpress-plugin_ustawienia01

Znajdziemy tu m.in. czas po jakim ma wygasać cache (0 jeśli sam nigdy ma nie wygasać), czy opcje związane z czyszczenie całego cache (zamiast powiązanych elementów) po publikacji nowego postu/wpisu, czy gdy pojawi się jakiś komentarz. Znalazła się tu też opcja do wstępnej kompresji keszowanych stron do formatu gzip.

Być może dla niektórych z Was ciekawą opcją będzie wsparcie dla grafiki w formacie WebP, czy dla standardu HTTP/2.

Do tego dochodzi jeszcze pole na wpisanie ID stron lub postów które chcemy wykluczyć z keszowania, i ew. wybór minimalizacji HTML lub HTML + JavaScript.

Czyszczenie cache

Z poziomu panelu zarządzania WordPressem cache możemy wyczyścić ręcznie za pomocą linku „clear cache” na górnej belce, jak i również – co moim zdaniem może być jednak trochę mylące, i być może warto to zmienić – w przypadku skorzystania z przycisku „zapisz zmiany” na ekranie ustawień wtyczki (obok przycisku jest stosowna informacja, ale jednak…).

Oczywiście cache wyczyścimy też korzystając z ustawienia „cache expiry”, choć moim zdaniem w większości przypadków jest to raczej zbyteczna opcja, i śmiało można wstawić tam cyfrę zero.

Aktywacja keszowania w wp-config.php

Pamiętajcie by dodać do pliku konfiguracyjnego WordPressa (wp-config.php) linijkę:

define('WP_CACHE', true);

Dzięki czemu aktywujecie obsługę mechanizmu odpowiedzialnego za keszowanie w WordPressie (advanced-cache.php).

Ustawienia zaawansowane

Jeśli jednak jesteście fanami większej integracji w to co i jak keszuje wtyczka tego typu, to możecie zajrzeć do dokumentacji wtyczki, gdzie znajdziecie również sekcję poświęconym dodatkowym/zaawansowanym ustawieniom dla webserwera Apache2 i Nginx.

Ustawienia dodatkowe dla Nginx

W przypadku korzystania z webserwera Nginx (akurat nie mam żadnego serwera z Apache2 pod ręką, ale podobną modyfikację można przeprowadzić również w tym przypadku) warto również lekko zmodyfikować plik konfiguracyjny wybranej domeny (vHosta) i zamiast standardowego wpisy typu:

location / {  try_files $uri $uri/ /index.php?$args;  }

dać choćby ten proponowany przez KeyCDN:

set $cache_uri $request_uri;    # bypass cache if POST requests or URLs with a query string  if ($request_method = POST) {   set $cache_uri 'nullcache';  }  if ($query_string != "") {   set $cache_uri 'nullcache';  }    # bypass cache if URLs containing the following strings  if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.php|wp-locations.php|sitemap(_index)?.xml|[a-z0-9_-]+-sitemap([0-9]+)?.xml)") {   set $cache_uri 'nullcache';  }    # bypass cache if the cookies containing the following strings  if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_logged_in") {   set $cache_uri 'nullcache';  }    # custom sub directory e.g. /blog  set $custom_subdir '';    # default html file  set $cache_enabler_uri '${custom_subdir}/wp-content/cache/cache-enabler/${http_host}${cache_uri}index.html';    # webp html file  if ($http_accept ~* "image/webp") {   set $cache_enabler_uri '${custom_subdir}/wp-content/cache/cache-enabler/${http_host}${cache_uri}index-webp.html';  }    location / {   gzip_static on; # this directive is not required but recommended   try_files $cache_enabler_uri $uri $uri/ $custom_subdir/index.php?$args;  }

Od razu warto ten kod do współdzielonego pliku konfiguracyjnego (Nginx Snippets), dzięki czemu będzie można go wykorzystać dla innych domen, a i ew. późniejsza zmiana/modyfikacja będzie szybsza/wygodniejsza.

Wtedy kod do dodania w pliku konfiguracyjnym domeny będzie np. wyglądał tak:

# ----- Ustawienia "location /" dla wtyczki WP KeyCDN Cahe Enabler -----  include snippets/wordpress-keycdn-cache-enabler.conf;  # ----- Ustawienia "location /" dla wtyczki WP KeyCDN Cahe Enabler -----

W tym przykładzie odpowiedni kod został mieszony w pliku snippets/wordpress-keycdn-cache-enabler.conf – Wy oczywiście możecie skorzystać z własnej nazwy.

Dzięki temu gdy np. z jakiś przyczyn zrezygnujecie z wtyczki, to zamiast ponownie modyfikować pliki konfiguracyjne wszystkich stron (WordPress + Cache Enabler) wystarczy w tym pliku wpisać:

location / {  try_files $uri $uri/ /index.php?$args;  }

I mimo, że jest to krok opcjonalny, to z moich testów wynika, że w dopiero po dodaniu tego kodu webserwer Nginx + PHP-FPM dostaje prawdziwego kopa.

Czy wtyczka działa?

By sprawdzić czy wtyczka działa, czyli do przeglądarki trafiła skeszowana wersja strony wystarczy sprawdzić źródło strony – jeśli znajdziecie na samym dole jakąś linijkę podobną do tych, to znaczy, że dostaliście stronę z cache:

<!– Cache Enabler by KeyCDN @ 17.03.2016 18:04:21 (webp gzip) –>  <!– Cache Enabler by KeyCDN @ 17.03.2016 18:04:21 (webp) –>  <!– Cache Enabler by KeyCDN @ 17.03.2016 18:04:21 (html gzip) –>  <!– Cache Enabler by KeyCDN @ 17.03.2016 18:04:21 (html) –>

Oczywiście warto wcześniej się upewnić, że dana strona była już choć raz odwiedzana (choćby przez Was samych), by podczas tej operacji wtyczka zrzuciła ją do cache… ;-)

Zresztą to, że działa poznacie również po informacji (w ustawieniach wtyczki, jak i na głównej stronie panelu WordPressa) o ilości danych wykorzystywanych na potrzeby cache stron(y).

Test wydajności/szybkości

Z racji tego, że większość z Was zapewne szuka wtyczki cache do swojej stronie nie po to by tylko i wyłącznie miała prostą konfigurację, ale by działała, postanowiłem zrobić mały test – wybrałem całkiem rozbudowaną stronę na WordPressie, która działa na niedużym serwerze VPS, ale przy ruchu jaki generuje wystarczającym (nawet ze sporym zapasem).

W ustawieniach domeny (vHosta) został użyty dodatkowy/opcjonalny kod dla serwera Nginx, bez niego różnice wprawdzie były, ale były dość niewielkie.

Test wykonałem za pomocą programu Apache HTTP server benchmarking tool, konkretnie polecenia:

ab -n 500 -c 10 http://adres-strony/

Wyniki – powtórzone kilkukrotnie – prezentowały się następująco:

Bez żadnej wtyczki cache:

Obciążenie CPU: 100%

Concurrency Level:      10  Time taken for tests:   209.773 seconds  Complete requests:      500  Failed requests:        0  Requests per second:    2.38 [#/sec] (mean)  Time per request:       4195.453 [ms] (mean)  Time per request:       419.545 [ms] (mean, across all concurrent requests)  Transfer rate:          117.96 [Kbytes/sec] received

Z wtyczką Cache Enabler:

Obciążenie CPU: 5-7%

Concurrency Level:      10  Time taken for tests:   17.030 seconds  Complete requests:      500  Failed requests:        0  Requests per second:    29.36 [#/sec] (mean)  Time per request:       340.591 [ms] (mean)  Time per request:       34.059 [ms] (mean, across all concurrent requests)  Transfer rate:          1463.36 [Kbytes/sec] received

Jak widać różnica jest znaczna – nie tylko w czasie w jakim został wykonany test, czy ilości operacji na sekundę, ale co być może jeszcze istotniejsze – w obciążeniu procesora jakie wygenerował testowy ruch.

Test został powtórzony kilkukrotnie, w różnych porach, i za każdym razem wyniki były podobne.

Cachify

Jak podają sami autorzy wtyczki Cache Enabler ich wtyczka bazuje na innej wtyczce – Cachify, napisanej przez Sergeja Müllera.

Niestety nie zdążyłem gruntownie przetestować wtyczki Cachify, przed trafieniem na Cache Enabler, ale krótki test na jednej ze stron nie wykazał jakiś problemów, a same ustawienia są dość podobne do ustawień wtyczki Cache Enabler:

wordpress_plugin_cachify_ustawienia01

Z pewnych względów raczej z tej dwójki zostanie ze mną Cache Enabler, ale zachęcam do samodzielnego przetestowania również wtyczki Cachify…

KeyCDN

Za wtyczką Cache Enabler stoi ekipa odpowiedzialna za usługę KeyCDN, więc można przypuszczać, że do keszowania naszej strony przyłożą się na tyle solidnie, by była to reklama dla ich głównej usługi…

I na razie to działa – bo wprawdzie każda moja strona działa z wykorzystaniem usługi CloudFlare (głównie ze względu na bardzo szybką obsługę zmian w strefie DNS, jak i dodatkowe bezpieczeństwo), to w przypadku projektu który mam nadzieję niebawem wystartuje, a gdzie prawdopodobnie będzie potrzebna usługa CDN w bardziej klasycznym/standardowym znaczeniu niż tylko CloudFlare, to prawdopodobnie skorzystam z usługi KeyCDN zamiast… ;-)

Przetestuj bezpłatnie (również) KeyCDN

Jeśli ktoś z Was chciałby przetestować nie tylko ich wtyczkę keszującą, ale również ich główną usługę (tak, mają dla niej również wtyczkę do WordPressa :-)), to możecie to zrobić bez ponoszenia jakichkolwiek kosztów (czy choćby podawania numeru karty kredytowej).

Konto testowe i dodatkowe 10 $ do wykorzystania

Możecie założyć konto testowe, gdzie otrzymacie 25 GB transferu (a dokładnie 1 $ do wykorzystania) na 30 dni – bez żadnych zobowiązań (nie musicie później nawet konta kasować).

Ale wystarczy, że założycie konto z tego linka, a dostaniecie dodatkowe 10 $ do wykorzystania, co zależnie od ruchu jaki generuje Wasza strona może Wam starczyć nawet na kilka miesięcy korzystania z usługi:

Jeśli nie wiecie jaki ruch generuje Wasza strona, to powiem tylko, że strona typu WebInsider (kilka tysięcy wyświetleń dziennie) generuje wg KeyCDN jakieś 25-35 GB ruchu, a więc 10 $ w takim przypadku starczyłoby starczyłoby na jakiś rok…

(!) Zgłoś błąd na stronie
Potrzebujesz profesjonalnej pomocy? Skontaktuj się z nami!
Spodobał Ci się artykuł? Zapisz się do naszego Newslettera - ZERO SPAMu, same konkrety, oraz dostęp do dodatkowych materiałów przeznaczonych dla subskrybentów!
Na podany adres e-mail otrzymasz od nas wiadomość e-mail, w której znajdziesz link do potwierdzenia subskrypcji naszego Newslettera. Dzięki temu mamy pewność, że nikt nie dodał Twojego adresu przez przypadek. Jeśli wiadomość nie przyjdzie w ciągu najbliższej godziny (zazwyczaj jest to maksymalnie kilka minut) sprawdź folder SPAM.
Młody Szymon pomógł tacie zapisać się do Newslettera WebInsider.pl i... teraz idzie popływać
WebInsider poleca księgowość wFirma
WebInsider korzysta z VPSa w HitMe.pl
WebInsider poleca VPSy DigitalOcean
WebInsider poleca serwis Vindicat
Napisz komentarz
wipl_napisz-komentarz_01Jeśli informacje zawarte na tej stronie okazały się pomocne, możesz nam podziękować zostawiając poniżej swój komentarz.

W tej formie możesz również zadać dodatkowe pytania dotyczące wpisu, na które – w miarę możliwości – spróbujemy Ci odpowiedzieć.
Linki partnerskie
Niektóre z linków na tej stronie to tzw. „linki partnerskie”, co oznacza, że jeśli klikniesz na link i dokonasz wymaganej akcji (np. zakup/rejestracja) możemy otrzymać za to prowizję. Pamiętaj, że polecamy tylko te produkty i usługi, z których sami korzystamy, i uważamy, że są tego na prawdę warte… :-)
Znaki towarowe i nazwy marek
W niektórych wpisach (oraz innych miejscach na stronie) mogą być przedstawione/użyte znaki towarowe i/lub nazwy marek, które stanowią własność intelektualną tych podmiotów, a zostały użyte wyłącznie w celach informacyjnych.
Na WebInsider.pl korzystamy z motywu Extra od Elegant Themes. Zobacz dlaczego...