Nie używaj samego /%postname%/ w strukturze bezpośrednich odnośników

nie-uzywaj-samego-postname-w-linkach

Przeczytałem ostatnio bardzo ciekawy wpis na blogu Digging into WordPress dotyczący problemów jakie może przynieść ustawienie w sekcji dotyczącej struktury bezpośrednich odnośników do wpisów WordPressa samego parametru /%postname%/.

Okazuje się, że to, wydawałoby się, logiczne postępowanie może skutecznie spowolnić działanie serwisu opartego na WordPressie. Konkluzją całego artykułu była porada, żeby tego nie robić. Dlaczego?

Źródło problemu

Okazuje się, że źródłem potencjalnego spowolnienia działania serwisu opartego na WordPressie w czasie, gdy struktura generowania bezpośrednich odnośników do wpisów opiera się na samym parametrze /%postname%/ jest ilość zapytań WordPressa do bazy danych. Skąd to się bierze?

Otóż w WordPressie domyślnie ustawioną strukturą bezpośrednich odnośników do stron statycznych jest właśnie sam parametr /%postname%/. Jeśli my ustawimy taką samą strukturę linków dla wpisów WordPress przed wyświetleniem artykułu musi wykonać zapytanie do bazy danych, aby „odczytać” tekst w linku i sprawdzić, czy nie istnieje już strona statyczna z tym samym tekstem w linku. Jeśli tak jest rzeczywiście, WordPress tworzy dla tej strony regułę, która odróżnia co jest stroną statyczną, a co wpisem z tym samym tekstem w linku. Właśnie ten czas potrzebny na wywołanie zapytania i utworzenie ewentualnej reguły dla strony spowalnia działanie całego serwisu.

Rozwiązanie problemu

Okazuje się, że z powodu wydajności systemu nie należy ustawiać na początku struktury bezpośrednich odnośników do wpisów parametrów tekstowych, takich jak /%category%/, /%tag%/, /%author%/, /%postname%/. Dużo lepszym rozwiązaniem jest wstawienie na początku w dwuczłonowej strukturze linków parametrów liczbowych, czyli np. /%year%/ lub /%post_id%/. Lista wszystkich możliwych do zastosowania parametrów jest dostępna na stronie kodeksu WordPressa dotyczącej sposobów tworzenia bezpośrednich odnośników.

Zmiana struktury linków w starych blogach i serwisach

Chociaż sama zmiana struktury bezpośrednich odnośników do wpisów jest banalnie prosta od razu rodzi się obawa o utratę wszystkich linków do wpisów, zarówno tych wewnątrz jak i zewnątrz serwisu. Okazuje się, że WordPress radzi sobie z tym problemem świetnie i to bez żadnych wtyczek, czy innych tricków. System ma bowiem wbudowany mechanizm automatycznego przekierowania 301 ze starego formatu linków na nowy. Sprawdziłem na swoim blogu testowym jak to działa w praktyce i rzeczywiście wszystkie stare linki są automatycznie przekierowywane na nowe. Autor wspomnianego na początku artykułu zaobserwował co prawda chwilowy spadek ruchu na blogu, ale podobno po pięciu dniach wszystko wróciło do normy.

Dobrze, że trafiłem na ten wpis w momencie odpalania WPBlogera, bo mogłem od razu ustawić odpowiednią strukturę linków do wpisów. Ma ona postać /%post_id%/%postname%/. To samo chcę zrobić na moim kilkuletnim blogu prywatnym. Zobaczymy jaki będzie efekt.

15 komentarzy do wpisu „Nie używaj samego /%postname%/ w strukturze bezpośrednich odnośników

  1. Czy ustawienia typu /%post_id%-%postname%/ czy /%post_id%,%postname%/ których używam na blogu również powodują szybsze działanie WP?

    • We wpisie na zagranicznym blogu, na który się powołuję jest mowa tylko o dwuczłonowej strukturze linków do wpisów, czyli rozdzielonych znakiem „/”. O myślniku, czy przecinku nic nie jest wspomniane, więc na 100% nie odpowiem Ci na to pytanie. Być może znajdzie się ktoś mądrzejszy ode mnie i to wyjaśni :)

    • Cieszę się, że blog ma nowego stałego czytelnika ;) A tak przy okazji, minęło już 2 tygodnie jak zmieniłem ustawienia struktury odnośników na swoim prywatnym blogu i mogę potwierdzić, że w żadnym stopniu nie wpływa to negatywnie na statystyki odwiedzin, więc automatyczne przekierowanie działa bez zarzutu.

    • Miesiąc temu zmieniłem strukturę linków na swoim prywatnym blogu i mogę z całą pewnością powiedzieć, że liczba odwiedzin nie zmniejszyła się praktycznie wcale, więc zmiana taka jest bezpieczna.

  2. Piotrze, dziękuję za poruszenie tematu. Na swoim blogu używam właśnie /%postname%/ i dlatego ten artykuł skłonił mnie do zagłębienia się w tą kwestię.

    To wszystko co tutaj napisałeś jest prawdą, jednak nie bez znaczenia jest liczba posiadanych stron statycznych. Jeżeli na blogu mamy ich niewiele, np. 4-7 (bo tyle nam wystarcza do zbudowania głównego menu) spokojnie możemy pozostać przy samym /%postname%/.

    Chodzi o to, że WP zanim odnajdzie odpowiedni szablon do wygenerowania danej strony na podstawie otrzymanego URL-a (mowa o przypadku gdy mamy ustawiony właśnie format /%postname%/) musi dodatkowo go (tego URL-a) porównać z nazwą każdej z tych stron statycznych. Jeśli ich będzie tylko 5, jest to tylko 5 dodatkowych porównań, czas ładowania strony wydłuży się niezauważalnie, co innego, gdy stron statycznych mamy 60, wówczas próba odwołania się do witryny może zakończyć się nawet timeoutem.

    Szczegóły te wyczytałam na anglojęzycznym forum, kwestię wyjaśnił szczegółowo Otto, znany spec od WP. Mówi, że problem wydajnościowy zaczyna się dla liczby stron 50+.

  3. Ja mam pytanie trochę zbliżone do tematu postu.

    Załóżmy, że mam stronę o adresie http://www.adres.pl gdzie w głównym katalogu zainstalowany jest wordpress. Chcę stworzyć sobie na tym serwerze katalog np. test, w tym katalogu znajdują się jakieś pliki, które chcę udostępniać. Problem w tym, że gdy podaję ścieżke http://www.adres.pl/test to wordpress odczytuje to jako link do strony, ewentualnie wpisu (zależności właśnie od struktury linków).

    Jak zrobić żeby wpisując w/w adres pojawiała się po prostu jego zawartość. Czy to kwestia konfiguracji struktury linków?

    • Czy możesz podlinkować jakiś zrzut ekranu z tym jak to wygląda obecnie i drugi z tym, jak chciałbyś, żeby wyglądało? Myślę, że patrząc na te dwa obrazki będę w stanie pomóc Ci lepiej, niż na podstawie tego, jak opisałeś problem.

  4. Witam mam pytanie. Jak ustawic bezposrednie odnosniki w WP zeby nie pokazywal tych „krzaczkow” http://www.adres.pl/?p=123
    Wiem ze mozna polepszyc wyglad strony poprzez wpis /%postname%/ ale ja zeby po adresie strony nie pokazywalo dalszego urla.
    dzieki za pomoc.
    pozdrawiam

  5. @Piotrze, sądzę, że w przypadku używania wtyczek cache opisany problem traci na znaczeniu. Dla większości blogerów wtyczki zwiększające responsywność strony i ograniczające zużycie zasobów po stronie serwera są z typu must have

  6. Wszystko wyżej napisane jest prawdą.. no dobra jest prawdą dla WordPressa w wersji poniżej 3.3. Od najnowszej wersji 3.3 problem został usunięty i nie powinno być problemów wydajnościowych przy strukturze adresów typu domena.moja/%postname%/

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

*

Możesz użyć następujących tagów oraz atrybutów HTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>