Czy Google radzi sobie z Java Scriptem i poleceniami Ajax? To pytanie zadają sobie wszyscy planujący bądź posiadający sajty, które opierają się na technologii JS i Angular. Naturalnie zdań na ten temat jest wiele – tak, Google też ma swoje – i wpis ten nie ma służyć dogłębnej, technicznej analizie tego zagadnienia (za krótki jestem ;) ale przedstawić jeden ciekawy eksperyment, na który się napatoczyłem opuszczając na chwilę 4chan’a i wracając niechętnie do obowiązków. Chciałem się nim podzielić, sporo wyjaśnia i myślę, że w przystępny sposób tłumaczy to zagadnienie.
Przypomnijmy: my, SEOwcy często zadajemy (sobie, programistom, szwagrowi, naszym kotom oraz słońcu) podstawowe pytanie – czy jeśli zdecyduję się na fancy angularowe rozwiązanie, to nie przegram życia w SERP, ze względu na fakt, iż technologia ta (w skrócie) serwuje wyszukiwarce na każdej podstronie ten sam, wąski kod html, który to kod inicjuje aplikację (to, co Ty widzisz w swojej przeglądarce) – ale nie ujrzą tego małe, zaszklone oczy robocików Googla jeśli nie zastosujesz RENDEROWANIA aka PRERENDERINGU? No i mamy hipotezę.
Czy Google radzi sobie z JavaScript?
Jedni mówią: – Tak, wszak jest rok 2016 [wpis rozpoczął wtedy swoje życie], oczywiście, że Google rozkminia JavaScript.
Ale drudzy nie podzielają tego entuzjazmu: – Renderowanie po stronie serwera jest konieczne dla SEO!!1
Jeśli Google potrafi uruchamiać JavaScript i tym samym renderować widok po stronie klienta, to po co niezbędne jest dla SEO renderowanie po stronie serwera? OK, Google nie jest jedyną wyszukiwarką, ale jest z pewnością jedną z najważniejszych, pod którą warto optymalizować – a już na pewno w Bolandzie :)
Ostatnio natrafiliśmy na fajny eksperyment, który autor blogasa stephanboyer.com przeprowadził, aby sprawdzić w jakim stopniu bot crawlujący Google rozumie dynamiczny kontent. Autor popełnił niewielki sajcik pod domeną doesgoogleexecutejavascript.com, którą charakteryzowały poniższe elementy:
- HTML z serwera zawierał tekst „Google nie egzekwuje JavaScriptu”.
- Na stronie znajdował się wewnętrzny JavaScript, który zmieniał tekst na „Google egzekwuje JavaScript, ale tylko jeśli jest on osadzony w dokumencie”.
- HTML linkował również do skryptu, który załadowany, zmieniał tekst na „Google egzekwuje JavaScript, nawet jeśli skrypt jest pobierany z sieci. Jednak Google nie egzekwuje żądań AJAX”.
- Ten skrypt wykonywał żądanie AJAX i aktualizował tekst odpowiedzią z serwera. Serwer zwracał wiadomość „Google egzekwuje JavaScript i egzekwuje nawet żądania AJAX.”
Po uruchomieniu strony, autor połączył ją z jej repozytorium na GitHub i czekał na odkrycie strony przez Google. Następnego dnia w wyszukiwarce Google pojawił się poniższy wynik:
Jak opisuje autor, tydzień później, żeby zobaczyć czy Google przeindeksuje stronę i uruchomi JavaScript – bez zmian. Nic nie drgnęło. Potem poszło ręczne zgłoszenie strony do indeksu przez Google Search Console, a niedługo po tym pojawiło się to:
Czy Google poprawnie indeksuje zatem JavaScript?
Eksperyment pokazał, że nie ma gwarancji na to, że Google uruchomi JavaScript automatycznie. Możliwe, że będziesz musiał ręcznie zainicjować crawlowanie (Pobierz jako Google w GSC). I nawet wtedy Google prawdopodobnie nie wykona żądań AJAX, na których być może opierać się będzie Twoja witryna, a przynajmniej Google nie wykonał tego w tym przypadku.
Eksperyment doczekał się też aktualizacji.
Noworoczna aktualizacja (1 stycznia 2017): najwyraźniej jakiś czas po eksperymencie Google ponownie przeindeksował witrynę i tym razem wywołał żądanie AJAX:
Finalny wniosek jest następujący: Google może, ale nie musi zdecydować się na uruchomienie Twojego JavaScriptu, a Ty nie chcesz, żeby Twój biznes był zależny od skłonności Google na dany dzień.
Dla swojego bezpieczeństwa zadbaj o renderowanie po stronie serwera.
zyczeniowo
Tak z praktyki:
Seowałem w 2016 roku, stronę stworzoną w całości w angularze i Google pięknie ją łyknął.
England.pl
Mieliśmy podobny problem, z racji niemożliwości dodawania title i meta description do artykułów na blogu (koszmarny CMS), zrobiliśmy eksperyment.
Przez Google Tag Managera pobieraliśmy wartości z artykułów (przykładowo, h1) i wrzucaliśmy JSem do odpowiednich tagów. Efekt? Google w 100% zjadał nasze nowe title i desc :)
Seo-cymes.pl
Warto również stosować techniki „feature detection” i „progressive enhancement”, by miec pewność, że treści są dostępne dla odbiorców.