Pozycjonowanie stron opartych o JavaScript

Pozycjonowanie stron opartych o JavaScript


W swojej praktyce zawodowej spotkałem się z opiniami, iż tworzenie stron internetowych w oparciu o JavaScript jest niekorzystne dla procesu pozycjonowania. Jak to zwykle bywa, „diabeł tkwi w szczegółach”. Dobrze skonstruowana strona www nie powinna sprawiać problemów robotom Google.

Podstawowe pojęcia, które warto poznać.

  • JavaScript – Skryptowy język programowania, zapewniający większe możliwości interakcji z użytkownikiem niż HTML. W odróżnieniu od języka HTML (wysyłanego przez serwer) pozwala na dynamiczne zmiany na stronach internetowych w przeglądarce użytkownika np. zmiany treści lub wyglądu czy wyświetlenie okien dialogowych.
  • Źródło HTML – w ujęciu najbardziej ogólnym jest to po prostu kod strony w języku znaczników HTML, który wysyłany jest do przeglądarki użytkownika. Następnie, w oparciu o style CSS (opisujące wygląd strony) przeglądarka interpretuje wspomniany kod i wyświetla stronę. Oczywiście proces ten opisany został w uproszczeniu, aby był jak najbardziej zwięzły.
  • DOM (Document Object Model – Obiektowy model dokumentu) – Jest to sposób opisywania dokumentów HTML poprzez elementy (obiekty) uporządkowane w hierarchicznej strukturze drzewa. Po pobraniu źródła HTML, przeglądarka przekształca pobrany kod do drzewa DOM. Następnie przy pomocy JavaScript można swobodnie zmienić elementy strony www (drzewa DOM), np. ukryć część produktów na stronie po wybraniu filtrowania.

Strona www może dzięki temu zmieniać się bez potrzeby ponownego jej wyświetlania (odświeżania). Zmieniają się tylko elementy drzewa DOM. Niegdyś roboty wyszukiwarek nie mogły rozpoznać takiej treści, bazowały tylko i wyłącznie na zawartości źródła HTML. W przypadku, gdy robot nie był w stanie odczytać treści, po prostu ją ignorował. Taka treść w ogóle nie wpływała na ranking witryny. Utrwalił się pogląd, że JavaScript szkodzi w procesie optymalizacji pod wyszukiwarki.

2 błędy, które powodują, że pozycjonowanie jest utrudnione

Niecałe dwa lata temu Google na swoim blogu poinformowało, że ich roboty mogą skanować i wyświetlać dynamicznie generowaną treść[1]. To zależy od kilku czynników z czego wymienię dwa bardzo ważne:

  1. Możliwość odczytu odnośników (robot musi wyszukać odnośniki w serwisie i odnaleźć wszystkie podstrony).
  2. Udzielenie dostępu do skryptów (należy odblokować dostęp w pliku robots.txt).

Możliwość odczytu odnośników jest podstawą, gdyż roboty Google indeksują zasoby sieciowe przechodząc po adresach stron internetowych. Należy używać znacznika anchor z atrybutem href (<a href=”odnośnik”>[…]</a>), inne sposoby implementacji mogą pogorszyć indeksowanie odnośników.

Udzielenie dostępu do skryptów jest ogromnie ważne, gdyż bez dostępu do skryptów robot nie może widzieć dynamicznie generowanych treści. Jak mniemam, twórcy serwisów www chcą zablokować takie pliki przed pojawieniem się w indeksie wyszukiwarki. Lepiej w tym celu użyć nagłówka HTTP x-robots-tag opatrzonego instrukcją noindex[2]. Jeśli projektujemy serwis www w oparciu o JavaScript, należy odblokować skrypty wykorzystywane przy wyświetlaniu widoku strony internetowej.

Gdy w serwisie www zastosowane są powyższe zasady, wówczas roboty Google mogą wygenerować drzewo DOM jak przeglądarka.

Czy warto używać escaped_fragment?

Google przedstawiło w roku 2009 sposób na rozwiązanie kwestii dynamicznie generowanych treści. Adresy URL miały przyjmować składnię z elementem hashbang (http://nowastrona.ok/nowasekcja#!artykul1), a użytkownik nie mający obsługi JavaScript (oraz roboty) uzyskiwał adres URL w formie http://nowastrona.ok/nowasekcja?_escaped_fragment_=artykul1. Takie podejście umożliwiało poprawne indeksowanie dynamicznych zasobów, gdyż miały swoją statyczną „kopię”. Aktualnie ten sposób konstruowania adresów URL jest zdeprecjonowany, co także zostało wspomniane na blogu Google[1].

Internet to nie tylko Google

Na koniec warto wspomnieć, że nie wszystkie roboty wyszukiwarek wspierają w pełni dynamiczną treść. Kolejną kwestią jest też fakt, że nie każdy framework JavaScriptu jest wspierany w procesie skanowania witryny. Ciekawskich odsyłam do artykułu Bartosza Góralewicza, który przeprowadził wartościowy eksperyment[3].

Pod kątem pozycjonowania, warto stale polegać na źródle HTML. Jeśli chcemy stosować JavaScript w serwisie www, to należy pamiętać o prawidłowej implementacji, gdyż mogą się pojawić problemy przy indeksowaniu naszej strony internetowej.

Źródła:

  1. https://webmasters.googleblog.com/2015/10/deprecating-our-ajax-crawling-scheme.html
  2. https://yoast.com/x-robots-tag-play/
  3. https://goralewicz.com/blog/JavaScript-seo-experiment/
Kategoria

1 Komentarz

Dodaj własny
  1. 1
    Zgred

    Problem z escape fragments jest czasem taki, iż devovie nieprawidłowo wdrożyli angulara i nie wszystko działa poprawnie. Utrudnione jest to przy dużych stronach kopor gdzie zmiana URLi (które od lat zawierały #!) powoduje, że wszystko wylatuje i nie wiaodmo kiedy wróci.
    Wspaniałym przykładem jest fakt, że gugiel sam wspiera angulara, który jest jednym ze słabszych javovych frameworków 🙁

+ Napisz komentarz