Czytelnicy zaglądający na bloga od początku wiedzą, jak wiele on przeżył, głównie ze względu na moje wieczne narzekania oraz całkowity brak zdecydowania co do systemu, jaki miał go obslugiwać. Ostatecznie w czerwcu zdecydowałem się jednak na powrót do Wodpressa, na którego wydajność tak długo narzekałem. Bogactwo wtyczek no i ciągle rozwijana platforma to jednak zbyt wielkie zalety, aby z nich rezygnować na korzyść własnego rozwiązania, na którego dopracowywanie traciłem czas, który mogłem przecież poświęcić na pisanie wpisów. Od tamtego czasu sporo się zmieniło – oczywiście nie mogłem odpuścić, szukałem więc wszystkich sposobów na przyśpieszenie tego systemu blogowego. Czas zaprezentować najciekawsze rozwiązania.

PHP Speedy WP

Nie jest to tak naprawdę żadna wtyczka zajmująca się buforowaniem elementów znajdujących się na witrynie. Nazwa również może być myląca, ponieważ sugeruje, że pozwala to na przyśpieszenie pracy związanej z generowaniem jej przez PHP. Speedy to tego nie służy, co więcej, może nawet nieco wydłużyć czas generowania!. Po jaką cholerę więc to opisuję? Zaczekajcie zanim mnie zlinczujecie – dzięki temu niewielkiemu pluginowi możemy dokonać automatycznej minimalizacji oraz kompresji styli, z których korzysta używany przez nas motyw, oraz dołączanych skryptów javascipt. Pozwala to na również na ograniczenie liczby żądań do serwera, a w ogólnym rozrachunku przyśpieszenie ładowania strony przez przeglądarkę. Sama sobie wtyczka nie zmniejszy obciążenia serwera, dobrze jest ją jednak stosować razem z odpowiednim cacherem, jako wspomagacz skierowany w stronę naszych odbiorców.

WP Cache

Jest to już dosyć leciwa, podstawowa wtyczka do cachowania elementów naszego bloga. De facto WordPress ma obecnie wbudowane podobne mechanizmy, ale niestety nie do końca się one sprawdzają, ponieważ generowanie całość nadal trwa strasznie długo – w wypadku mojego blogu operacje wykonywane przez PHP trwają niejednokrotnie około sekundy. Wydaje się, że to naprawdę mało. Nic bardziej mylnego, wystarczy dodać odpowiednie porównanie: spore forum działające na phpBB3 jest generowane w zaledwie 0,05s… jest więc na co narzekać? Raczej tak… jest to więc raczej ciekawostka do wykorzystywania na bardzo małych witrynach.

Hyper Cache

To jest już poważna sprawa, która naprawdę może odciążyć nasz serwer. Wtyczka cachuje niemal całe strony, serializuje dane i zapisuje je jako odpowiednie pliki. Gdy otwieramy dany wpis, plugin sprawdza czy posiada takie pliki w cache i w razie ich istnienia serwuje je nam, w wybranej wcześniej formie: skompresowanej, lub zwykłej. Z poziomu panelu administracyjnego możemy ustawić, jak często pliki mają być odświeżane, poza tym dostępna jest opcja automatycznego oczyszczania. Dodatkową możliwością Hyper Cache jest ustawianie odpowiednich nagłówków (o których postaram się napisać w jednym z następnych wpisów) pozwalających na znaczne ograniczenie transferu, oraz zwiększenie szybkości ładowania się strony u odbiorcy. Całość jest kompatybilna z urządzeniami mobilnymi jak i wieloma innymi wtyczkami. Godne polecenia, powinno dać odczuwalne odciążenie serwera.

WP Super Cache

Bardzo podobne w działaniu do Hyper Cache, lecz znacznie popularniejsze rozwiązanie. W tym wypadku również cachowane są całe strony… ALE natykamy się na pewną bardzo istotną różnicę. Po pierwsze, nie są one w żaden sposób serializowane. Po drugie, autorzy posunęli się dalej przy sprawdzaniu i odczytywaniu cache – nie jest to wykonywane po stronie PHP i bazy danych, lecz poprzez serwer z poziomu plików htaccess. Wtyczka po prostu sprawdza czy sytuacja pozwala na użycie cache: gdy nie ma cookies dotyczącego danego bloga, gdy superglobalna POST jest pusta i gdy istnieje dany plik, po prostu moduł mod_rewrite kieruje nas na czysty plik html wygenerowany przy budowaniu bufora. Nad wyraz proste i nad wyraz skuteczne: w połączeniu ze Speedy optymalizacja daje w efekcie brak zapytań do bazy, brak operacji w PHP i znacznie mniej żądań do serwera. Domyślna konfiguracja jest moim zdaniem nieco źle wykalibrowana – warto ustawić pełny poziom cachowania a także zwiększyć żywotność plików, np. 24 zamiast zaledwie jednej godziny. Wadą jest brak ustawiania odpowiednich nagłówków, ale to możemy zrealizować samodzielnie. Sam używam od dłuższego czasu i naprawdę polecam.

W3 Total Cache

Kolejny system buforowania. Sam mechanizm w sumie niewiele różni się od Hyper Cache. Brak tu jednak niemal doskonałego w swojej prostocie pomijania PHP którym cechuje się Super Cache. Niemniej jednak, można wtyczkę tą uznać za najbardziej rozbudowane rozwiązanie. Jej niewątpliwą zaletą jest wsparcie APC oraz memcached – opcje konfiguracyjne są bardzo rozbudowane, możemy ustawić cache niemal dla wszystkiego: wybiórczo, dla pojedynczych widgetów czy podstron, dla całych wpisów, a nawet dla kanałów RSS! Total Cache umożliwia podobnie jak PHP Speedy kompresję i minimalizację plików CSS oraz javascript, pozwala również na maksymalne optymalizacje powodujące drastyczne zmniejszenie liczby żądań do serwera. Nie zabrakło również konfiguracji nagłówków informujących o modyfikacjach oraz wsparcia dla VPSów i serwerów dedykowanych, w tym działających w klastrach. Słowem… mamy tu po prostu wszystko. Jak na moje potrzeby to jednak zbyt wiele, powinno się jednak świetnie sprawdzać przy naprawdę dużych projektach.

Ręczna poprawa motywu

Ostatnie z polecanych przeze mnie rozwiązań jest już nieco drastyczne – możemy dodatkowo ręcznie poprawić pliki naszego motywu w wordpressie. Niezbędne jest minimum wiedzy z dziedziny PHP oraz znajomość języka angielskiego. Co mamy robić? Nic trudnego. Po prostu otwieramy przykładowo plik odpowiedzialny za górną część naszej witryny (np. header.php) i wyszukujemy w nim wystąpień kodu PHP a następnie zamieniamy je na statyczne wartości w zwykłym HTMLu. Przykłady? Nawigacja / nawigacja rozsuwana w topie. Sam mam u siebie coś takiego i zamiast zostawiać wszystko na rękach WP, wrzuciłem zamiast odpowiedniej funkcji po prostu kod HTML odpowiadający za jej wyświetlanie. Jeżeli nie stosujemy żadnego systemu buforowania porządne przeglądnięcie plików powinno dać zauważalny spadek liczby zapytań do bazy. Poza tym możemy przy okazji usunąć wszelkie zbędne nam elementy, takie oszczędności to kolejne cenne mikrosekundy ;)

Google XML Sitemaps

Dziwi Was ta pozycja w takim wpisie? Zaraz wszystko wytłumaczę. Wiele osób korzysta z tej wtyczki, bowiem pozwala ona na wymierną poprawę indeksowania naszego bloga i wybicie go na wyższe pozycje w wyszukiwarkach takich jak google czy bing. Podstawową jej funkcją jest tworzenie mapy witryny dla google no i tu zaczynają się schody. Domyślnie wtyczka oblicza istotność danego wpisu na podstawie ilości komentarzy do niego. Niestety, w takim wypadku przebudowa mapy połączona z jego kompresją może trwał długo… bardzo długo.  Na dodatek angażowane jest wiele megabajtów pamięci. Gdy pojawi się nowy komentarz, znowu trzeba przebudować mapę… no i wszystko się powtarza. Jeżeli korzystamy z tej wtyczki warto w konfiguracji wybrać opcję, która ustali sztywny „poziom ważności” dla każdej podstrony naszej witryny – skrypt nie będzie musiał co chwila budować mapy od nowa, a nawet gdy zajdzie taka potrzeba, proces przebiegnie znacznie szybciej. W wypadku dużych blogów ta prosta zmiana daje wymierne rezultaty.

WordPress zmorą hostingodawców?

Ostatnio wiele mówi się o wydajności WordPressa. W sumie to mówi się o tym od dawna i bynajmniej nie są to żadne pozytywne opinie – wśród hostingodawców już zdobywa on sobie sławę podobną do phpBB by Przemo wśród skryptów do obsługi for dyskusyjnych. Podobnie jak w tamtym przypadku, tutaj również winni są właściciele serwisów. Po prostu w miarę rozwoju naszego bloga czy też witryny zbudowanej na WP, zwiększa się również i obciążenie generowane przez ten niezbyt optymalnie działający skrypt. W takich wypadkach zamiast szukać nowego providera czy też zbierać pieniądze na lepszy pakiet, powinniśmy zainteresować się systemami buforowania – instalacja wtyczki to moment, a może przynieść bardzo dobre rezultaty. W moich przypadku zmieniły one podejście do całego systemu. Kiedyś strasznie narzekałem na WordPressa. Obecnie muszę przyznać, że z włączonym WP Super Cache jest on lekki niczym piórko, a nadal stanowi świetną bazę z ogromnymi możliwościami rozwoju.

Podobne wpisy:

  1. O wydajności MyBB słów kilka…
  2. Optymalizacja Windows Vista – Poradnik
  3. WordPress śmieciarz…
  4. WordPress po raz kolejny w odstawkę?
  5. WordPress 3 Beta

5 komentarzy

Dodaj komentarz
  1. Marcin Łuniewski   |   27.11.2009 18:44

    Jesteś pewien, że ALL In One SEO Pack tworzy mapy witryny? Osobiście nie widzę takiej opcji.

  2. LukasAMD   |   27.11.2009 18:54

    No tak… ja też tego nie widzę.
    Sorki, pisałem wpis grubo po północy no i jak widać nieco mi się zamieszało.

    Poprawione,
    chodziło oczywiście o Google XML Sitemps.
    Do All in One SEO Pack przyczepić się nie mogę ;)

  3. [...] działa on naprawdę wolno. W pewien sposób sprawę poprawa zastosowanie odpowiedniego mechanizmu cache dla Wodpreessa, ale nie zawsze skutki są takie, jakie chcielibyśmy aby były. Oczywiście od dłuższego czasu [...]

  4. bartek124   |   30.12.2009 11:40

    WP Super Cache Ci na pewno działa? W źródle strony widzę:
    <!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->

  5. LukasAMD   |   30.12.2009 11:48

    Tak, ale obecnie jest wyłączony.

Dodaj komentarz