Optymalizacja WordPress’a

Bynajmniej nie będę opisywał jak to każdy może sobie zoptymalizować bloga, bo jest już dostępnych kilka poradników i nie będę powielał treści już spisanych. Napiszę po prostu co zrobiłem od początku stycznia 2009 z blogiem bynajmniej.pl. Dla siebie, ewentualnie dla potomności ;-)

Zmiana serwera.

Blog przeniósł się z serwera w UK, hostowanego przez Hostnine i wylądował w Polsce, na serwerze w Gdańsku, hostowanego przez firmę netmark.pl. Hostnine był dobrym serwerem, ale w miarę jak rozrastały się moje inne strony, blog zaczął coraz częściej rzęźić i nawet znikać na kilka godzin z błędem 503. Decyzję o przeniesieniu podjąłem właśnie w czasie takiego padu, a że akurat byłem na blogu pajmon.com i zauważyłem ikonkę netmarku, to bez wahania wykupiłem tam najniższy pakiet i ekspresowo przeniosłem bloga (pierwszy raz udało mi się od razu osiągnąć zgodne kodowanie bazy danych). Chociaż może ekspresowo to nie bardzo pasujące tu słowo bo..

Domena.

Domena bynajmniej.pl wygasała 3 stycznia 2009 roku, więc zawczasu przejrzałem oferty przedłużeń wszystkich rejestrantów i wybrałem najlepszą  czyli ovh.pl. Przetransferowałem domenę z az.pl (tam cena za przedłużenie to 130zł) do ovh, i 2 stycznia przedłużyłem (45zł). Piszę o tym, bo ovh.pl ma chyba najdłuższe czasy propagacji dnsów ze wszystkich rejestrantów jakich do tej pory używałem. Domena miała czkawkę prawie całe 24h, co zmusiło mnie do usunięcia kopii strony z hostnine, gdyż pojawiały się tam nowe komentarze, a nie chciałem już babrać się z bazą danych. Wszystkich którzy akurat trafili w tym czasie na stronę przepraszam, ale nie miałem pojęcia, że zajmie to tyle czasu.

PhpSpeedy.

Inspiracja przyszła z tego wpisu. Sprawdziłem przez ySlow jak radzi sobie bynajmniej.pl.

clipboard01

Wynik był mało zadowalający, więc zaprzęgłem Google do roboty i znalazłem kilka wpisów traktujących o optymalizacji WordPressa. Jeden wpis jak i cały blog okazał się kopalnią wiedzy na ten temat, dlatego postanowiłem wykonać większość poleceń Vladimira, takich jak instalacja cache dla gravatarów (używając tego pluginu ), usunięcie systemu rewizji, czy instalacja pluginu automatycznie optymalizującego bazę danych.

Najważniejsza jednak okazała się wskazówka dotycząca pewnego pluginu do Wordpressa – PhpSpeedy. Plugin ten zoptymalizował mi pliki css i javascript łącząc je w jeden i dołożył nagłówek expires. Po poprawkach dostosowujących go do Wp-Super Cache, oraz usunięciu widżetu flakera oraz kodu z blogadvertising zrobiłem ponownie test.

clipboard02

Jak widać 19 zapytań to obrazki, które mogłbym teoretycznie zredukować do 1, jednak nie mam pojęcia jak wykorzystać CSSSprite z Wordpressem (i chyba byłoby to niewykonalne, z racji regularnych zmian obrazków na stronie głównej). Myślę, że zejście z 69 do 23 to niezły wynik, dlatego głębiej wchodzić już w to nie będę :-)

Nofollow.

Ostatnią rzeczą za która się wziąłem był odpływ linkjuice’u zarówno ze strony głównej bloga, jak i podstron. Postanowiłem wziąć się za wszystkie zdublowane linki (czyli np. 3 linki prowadzące do tego samego wpisu), linki z obrazków reklamowych, gravatary, linki z górnego menu do stron, oraz wszystkich linków prowadzących do kategorii (które jako strony mają u mnie parametr noindex).

Wydawałoby się, że nie powinienem mieć problemów z tym zadaniem i rzeczywiście z większością poradziłem sobie dość szybko, doklejając do szablonu odpowiednie tagi.

Problemem okazał się sposób wyświetlania menu kategorii

menu

WordPress wyświetla przez plik header.php używając wp_list_categories.

Trochę czasu zajęło mi odnalezienie rozwiązania, dlatego zamieszcze je tutaj dla potomności. Aby uzyskać taki efekt wystarczyło użyć filtru wp_rel_nofollow, prawda, że oczywiste (ja też nie widziałem do dzisiaj, że Wordpress ma filtry)?

Jednak samo dodanie kodu

add_filter('wp_list_categories','wp_rel_nofollow');

do pliku wp-includes/default-filters.php nie załatwi sprawy, gdyż występuję tam jakiś bug, który uniemożliwia prawidłowe dodanie nofollow do kategorii. Rozwiązaniem jest edycja funkcji wp_rel_nofollow() w pliku wp-includes/formatting.php. Wystarczy usunąć linijkę zawierającą

$text = $wpdb->escape($text);

.

Po tym jak uporałem się z kategoriami, chciałem też założyć filtr, na funkcję comments_popup_link która odpowiada za wyświetlanie ilości komentarzy przy postach na stronie głównej, i oczywiście linkuję do tych postów (tak, dołożyli 3 link, jakby ten z tytułu i z „więcej” nie wystarczył).

Rozwiązanie znalazłem na tej stronie. Wystarczy przekopiować zawartość nofollow_functions.php i dokleić to czego potrzebujemy do naszego themowego functions.php (lub utworzyć nowy plik, jeśli functions.php nie istnieje). W moim przypadku musiałem edytować plik odpowiedzialny za wyświetlenie strony głównej i dopisać do funkcji comments_popup_link nofolow, dzięki czemu otrzymałem funkcję

nofollow_comments_popup_link.

Cachowanie widżetów.

Osobiście nie używam widżetów na tym blogu, ale na innych stronach tak, dlatego polecę jeszcze ten plugin, dzięki któremu możemy obniżyć ilość zapytań do bazy naszej głównej strony o nawet 70%. Myślę, że nie muszę tłumaczyć zbawiennego wpływu tego pluginu na hosting i czas wgrywania strony.

To do.

Do zrobienia została mi zmiana nazwy slugu każdej kategorii, która dostała jakiś GooglePR (mimo noindex na danej stronie, PRsą wyższe od 0), stworzenia posta z tym slugiem i automatyczne przekierowanie go na stronę główną. Zawsze to kilka linków z PR większym od zera więcej. A może coś jeszcze? Dajcie znać, z czym można jeszcze pokombinować :-)

  • Świetny wpis. Mam kilkanaście blogów opartych o wordpress'a, które udało się dzięki Twojemu wpisowi ładnie zoptymalizować.

  • stalowe

    Ovh ma najlepsze cenę. Wpis ma już swój "wiek" ale do chwili obecnej nie spotkałem lepszego rejestratora, z tak dobrymi cenami. A co do samego wpisu nie wiem czy jest sens odkopywać i czy wiedza w nim zawarta nadal jest aktualna? – chodzi mi o odniesienie Twoich zaleceń do Wordpressa w wersji 3.04

  • te działania potrafią przynieść więcej szkody niż pożytku, gdy się nie ma czasu poświęcić im w pełni, by zrobić wszystko od a do z 

  • Dzięki za pomocny wpis! Takie skondensowane info na talerzu to to, czego szukałem :)