Crawlowanie, indeksowanie i budżet crawlowania
Spis treści:
- Czym jest crawlowanie?
- Indeksowanie vs crawlowanie – różnice
- Budżet crawlowania
- Limit szybkości crawlowania
- Szybkość serwisu a limit szybkości crawlowania
- Zapotrzebowanie na indeksowanie
- Czy szybkość crawlowania ma wpływ na pozycje serwisu w Google?
- Jakie czynniki obniżają budżet crawlowania?
- JavaScript i budżet crawlowania
- Błędne koło budżetu crawlowania
- SEO kluczem do skutecznego pozycjonowania
Każdy, kto choć trochę interesuje się pozycjonowaniem stron internetowych w wyszukiwarce Google i ich optymalizacją, z pewnością niejednokrotnie spotkał się z pojęciem „budżetu crawlowania” (ang. crawl budget), w polskiej literaturze nazywanego często (moim zdaniem błędnie) „budżetem indeksowania”.
Dlaczego uważam to określenie za błędne? Wytłumaczę to w dalszej części artykułu, w którym wyjaśnię także czym jest budżet crawlowania oraz czym różni się crawlowanie od indeksowania. Zwrócę również uwagę na niebezpieczeństwa związane z budżetem crawlowania, na jakie narażone są współczesne serwisy mocno wykorzystujące skrypty JavaScript.
Niestety, często zdarza nam się mylić różne pojęcia przywodzące na myśl bardzo podobne skojarzenia. Świetnym tego przykładem mogą być pojęcia „pozycjonowanie” oraz „SEO”, które nierzadko traktowane są jako synonimy, co jest założeniem błędnym. Pozycjonowanie to cały szereg działań mających na celu sprawienie, aby strona znalazła się jak najwyżej w wynikach wyszukiwania Google, podczas gdy SEO (optymalizacja stron dla wyszukiwarek) to tylko jeden z wielu procesów składających się na pozycjonowanie.
Kolejnym przykładem z zupełnie innej dziedziny może być to, czym zajmuje się ekologia – każdy przecież wie, że ochroną środowiska, czyż nie? Otóż nie! Ochroną środowiska zajmuje się sozologia, a głównym założeniem ekologii jest zupełnie coś innego – mimo wszystko ekologię stereotypowo kojarzymy z ochroną środowiska.
Podobnie jest z indeksowaniem.
Co robi Googlebot, gdy pobiera zawartość naszej strony internetowej?
Większość czytelników odpowie pewnie, że ją indeksuje. Otóż nie, on ją tylko crawluje lub, jak kto woli – skanuje i rozpoczyna długi proces, który może, ale wcale nie musi, doprowadzić do jej zaindeksowania. Indeksowanie może mieć miejsce dopiero później lub może nie nastąpić wcale.
Czym jest crawlowanie?
Crawlowanie (crawling), zwane też skanowaniem, pełzaniem, przechodzeniem, czołganiem – to pobieranie naszej strony internetowej i wchodzących w jej skład zasobów przez Google. Jest to proces banalny w swojej prostocie, ale jednocześnie kluczowy dla całego pozycjonowania.
Można powiedzieć, że roboty crawlujące (zwane także robakami, pająkami czy Googlebotem), to oczy Googla dzięki którym widzi on naszą stronę.
Crawlowanie to jeszcze nie indeksowanie i jego przeprowadzenie nie jest równoznaczne z tym, że strona pojawi się w wynikach wyszukiwania, ale jego brak oznacza, że na pewno się w nich nie pojawi, gdyż Google po prostu jej nie „zobaczy”.
Znaczenie pliku robots.txt dla crawlowania
Samo crawlowanie jest niezależne od zawartości strony, np. od meta tagu robots. Jest to logiczne, bo przed crawlowaniem zawartość strony jest jeszcze dla Google nieznana. Zawartość strony ma na crawlowanie wpływ pośredni, przede wszystkim poprzez budżet crawlowania, o czym napiszę w dalszej części artykułu.
Na to, czy nasza strona zostanie pobrana przez Googlebota, bezpośredni wpływ ma natomiast plik robots.txt. Plik ten jest pobierany jako pierwszy i jeśli zawarte w nim dyrektywy zabraniają Googlebotowi dostępu do jakiegoś zasobu, np. strony internetowej lub jakiegokolwiek innego pliku, to nie jest on pobierany. Googlebot nie podejmuje w ogóle próby pobrania takiego zasobu, a co za tym idzie, nie jest w stanie również sprawdzić czy ten nadal istnieje.
Konsekwencje tego można niekiedy zaobserwować w wyszukiwarce Google, gdy zasoby, których ktoś chce się pozbyć z indeksu wyszukiwarki, zostają zablokowane w pliku robots.txt. Wówczas często pozostają zaindeksowane nawet gdy już przestaną istnieć pod tym adresem, ponieważ plik robots.txt uniemożliwia pobranie danego zasobu, a tym samym sprawdzenie czy on jeszcze istnieje.
Plik robots.txt uniemożliwia Googlebotowi zajrzenie na stronę, dlatego też nie można wygenerować snippetu, krótkiego opisu znajdującego się przy każdym wyniku wyszukiwania w Google.
W takiej sytuacji zobaczymy jedynie komunikat, że informacje na temat tego adresu są niedostępne, czasami z wyjaśnieniem, że z powodu blokady w robots.txt.
Indeksowanie vs crawlowanie – różnice
Czyli: co różni indeksowanie od crawlowania?
W odróżnieniu od crawlowania, które jest dość prostą czynnością polegającą na pobraniu konkretnego zasobu, np. strony internetowej, indeksowanie to złożony proces, który ostatecznie prowadzi do dodania strony do indeksu Google.
Czym jednak jest ten indeks?
Indeks wyszukiwarki Google to baza danych wszystkich stron, które się w tej wyszukiwarce znajdują.
Gdy szukamy czegoś w Google, przeszukujemy właśnie tę bazę danych, nie zaś bezpośrednio cały internet, co raczej nie byłoby wykonalne. Wynika z tego prosta zależność – znaleźć się w wynikach wyszukiwania Google może tylko to, co znajduje się w indeksie wyszukiwarki – jeżeli czegoś w nim nie ma, nigdy w wynikach wyszukiwania się nie pojawi.
Powyższy schemat pochodzący ze strony: https://developers.google.com/search/docs/guides/javascript-seo-basics obrazuje, jak złożonym procesem jest indeksowanie.
Crawlowanie znajduje się na początkowym etapie (prostokąt z napisem „Robot”), poszczególne strony znajdujące się w kolejce indeksowania są na tym etapie pobierane przez Google. Następnie pobrany kod HTML jest przetwarzany, znalezione linki trafiają do kolejki indeksowania (o ile nie mają atrybutu rel=”nofollow”), a zawartość strony jest analizowana m.in. pod kątem tego czy meta tag robots nie zabrania indeksowania. Jeżeli nic nie stoi na przeszkodzie temu, aby dana podstrona trafiła do indeksu, to po przetworzeniu pobranego kodu HTML może już się w nim znaleźć.
Kilkanaście lat temu byłby to finał całego procesu, dzisiaj jednak indeksowanie wygląda zupełnie inaczej.
Współczesne strony internetowe zawierają dużo skryptów JavaScript, które mogą diametralnie zmienić zawartość początkowo pobranego kodu HTML. W związku z tym, należy skrypty wykonać i ponownie wyrenderować kod HTML ze zmianami, które wprowadził w nim JavaScript.
Czym dokładnie jest JavaScript i HTML? Zostało to omówione w artykule o pozycjonowaniu stron opartych o JavaScript.
Wykonywanie kodu JavaScript wymaga czasu i zasobów, dlatego nie można go wykonać, ot tak, od razu. Z tego powodu strony internetowe, po wstępnym przetworzeniu, trafiają do kolejki renderowania, w której czekają aż do momentu, w którym będzie można wykonać znajdujące się na niej skrypty. Gdy już nastanie ten czas, skrypty są wykonywane, następuje ponowne renderowanie kodu HTML (zmodyfikowanego poprzez działanie skryptów JavaScript), HTML jest ponownie przetwarzany, znalezione nowe linki trafiają do kolejki indeksowania a sama strona, o ile nic nie stoi na przeszkodzie (np. meta tag robots), jest dodawana do indeksu (w wersji alternatywnej następuje aktualizacja danych znajdujących się w indeksie).
Budżet crawlowania
Czym zatem jest wspominany już budżet crawlowania?
Google definiuje budżet crawlowania jako liczbę adresów URL, które Googlebot może i chce indeksować.
Jest to bardzo trafna definicja, ale wymaga dalszego wyjaśnienia. Z przytoczonej definicji wynika, że na budżet crawlowania składają się dwa elementy:
- „liczba adresów URL, które Googlebot może indeksować” – która określona jest przez limit szybkości crawlowania,
- „liczba adresów URL, które Googlebot chce indeksować” – która wynika z zapotrzebowania na indeksowanie.
Wypadkowa tych dwóch, przeciwstawnych sobie elementów tworzy budżet crawlowania.
Limit szybkości crawlowania
Googlebot został zaprojektowany tak, aby, jak określa to Google, „być dobrym obywatelem sieci”. Oznacza to, że choć indeksowanie jest jego najważniejszym priorytetem, to musi on zadbać o to, aby nie pogarszać komfortu użytkowników odwiedzających daną witrynę internetową. Po to właśnie powstał limit szybkości crawlowania ograniczający maksymalną szybkość pobierania dla danej witryny. Odbywa się to poprzez ograniczenie liczby równoczesnych połączeń wykorzystywanych przez Googlebota podczas crawlowania serwisu oraz ograniczenia czasu oczekiwania pomiędzy kolejnymi pobraniami.
Szybkość crawlowania może zmieniać się w zależności od dwóch czynników.
Pierwszym z nich jest kondycja witryny. Jeżeli serwer odpowiada szybko oznacza to, że można zwiększyć liczbę połączeń i szybkość indeksowania wzrasta. Odwrotnie, jeżeli czas odpowiedzi się wydłuża lub serwer odpowiada błędami – wówczas limit zostaje obniżony i Googlebot crawluje mniej.
Drugim czynnikiem jest limit szybkości crawlowania ustawiony przez właściciela witryny w Google Search Console. Działa on tylko w jedną stronę, to znaczy obniżenie limitu powoduje spadek szybkości crawlowania, ale jego podniesienie nie oznacza, że Googlebot automatycznie zacznie crawlować więcej.
Szybkość serwisu a limit szybkości crawlowania
Na tym etapie łatwo wywnioskować, że szybkość witryny ma wpływ na budżet crawlowania podnosząc limit jego prędkości. Szybka witryna, niezwracająca błędów serwera (błędy o kodzie HTTP 5xx), jest dla Googlebota oznaką dobrej kondycji serwerów, dzięki czemu może on pobrać więcej zasobów w tym samym czasie. Przyspieszenie serwisu wpływa zatem pozytywnie nie tylko na doświadczenia użytkowników, ale także na budżet crawlowania serwisu.
Należy pamiętać również o tym, że szybkość witryny jest czynnikiem rankingowym w wyszukiwarce Google – warto mieć szybki serwis.
Zapotrzebowanie na indeksowanie
Drugim elementem wchodzącym w skład budżetu crawlowania jest zapotrzebowanie na indeksowanie. Nawet jeżeli limit szybkości crawlowania danego serwisu będzie wysoki, ale nie będzie zapotrzebowania na indeksowanie, aktywność Googlebota będzie niska.
Google wskazuje dwa kluczowe czynniki mające wpływ na zapotrzebowanie na indeksowanie.
Jednym z nich jest popularność – częściej indeksowane są te strony, które są popularne w internecie. Dzieje się tak dlatego, że Google chce, aby w indeksie wyszukiwarki znajdowały się jak najbardziej aktualne dane, szczególnie w przypadku serwisów odwiedzanych przez wielu internautów.
Drugim czynnikiem wpływającym na zapotrzebowanie na indeksowanie jest to, ile czasu minęło od ostatniego crawlowania danej podstrony. Google stara się zapobiegać „zestarzeniu się” indeksu i regularnie odświeża zawarte w nim dane.
Innymi czynnikami mogącymi zwiększać zapotrzebowanie na crawlowanie są np. zmiany w całym serwisie, takie jak przeniesienie całej witryny lub dużej części podstron. Wówczas zachodzi potrzeba zaindeksowania nowych adresów.
Czy szybkość crawlowania ma wpływ na pozycje serwisu w Google?
Według informacji Google szybkość crawlowania nie jest czynnikiem rankingowym w wyszukiwarce. Nie oznacza to jednak, że nie może mieć ona wpływu na pozycje serwisu w wynikach wyszukiwania.
Należy pamiętać , że crawlowanie jest konieczne, aby strona mogła zostać zaindeksowana; obecność w indeksie wyszukiwarki jest z kolei warunkiem niezbędnym, aby cokolwiek mogło pojawić się w wynikach wyszukiwania. Dlatego o budżecie crawlowania nie należy zapominać, szczególnie w przypadku nowoczesnych stron internetowych zawierających dużo skryptów JavaScript.
Jakie czynniki obniżają budżet crawlowania?
Google przedstawia kilka elementów mających wpływ na budżet crawlowania. Jest to przede wszystkim duża ilość adresów o niskiej wartości dodanej. Oprócz tego należy zwrócić uwagę na następujące czynniki:
- identyfikatory sesji w adresach URL oraz błędna optymalizacja nawigacji fasetowej – rozwiązać to można zwykle poprzez poprawne stosowanie meta tagu robots oraz linków kanonicznych,
- duplikaty treści znajdujących się w witrynie – Google „nie lubi” duplikatów treści, a ponieważ nie wnoszą one nowej wartości do indeksu wyszukiwarki, wpływają negatywnie na wysokość budżetu crawlowania,
- miękkie strony błędów – chodzi o sytuacje, gdy pod danym adresem nie ma strony internetowej, ale prezentowana strona błędu zamiast nagłówka HTTP 404 Not Found zwraca nagłówek HTTP 200 OK,
- nieskończone przestrzenie oraz strony pośredniczące, np. sytuacje, gdy do adresu URL można dopisywać różne ciągi znaków i w dalszym ciągu otrzymywać w wyniku tą samą lub bardzo podobną podstronę, niestanowiącą żadnej nowej wartości do zaindeksowania lub też, gdy dana podstrona nie wnosi żadnej nowej treści, a jedynie pośredniczy w drodze do innej podstrony,
- niska jakość i SPAM – nie powinno nikogo dziwić, że są to czynniki zniechęcające Googlebota do crawlowania serwisu,
- ataki hakerskie – z oczywistych powodów strony zaatakowane przez hackerów nie są chętnie indeksowane.
JavaScript i budżet crawlowania
Na tym etapie można zapytać dlaczego w ogóle przejmować się budżetem crawlowania serwisu, skoro nawet Google wyraźnie zaznacza, że większość ludzi zupełnie nie musi się tym martwić.
Otóż jak pokazują badania specjalistów [1], pomimo tego, że Google ciągle poprawia szybkość indeksowania serwisów internetowych i obecnie robi to naprawdę szybko, to w dalszym ciągu duża część stron internetowych ma treści niezaindeksowane nawet przez kilka tygodni po ich publikacji.
Dlaczego tak się dzieje?
Często powodem jest niewłaściwe wykorzystanie JavaScriptu. Ale jak to możliwe, skoro, jak informuje Google, Googlebot już od kilku miesięcy pracuje na silniku najnowszej wersji przeglądarki Chrome i potrafi renderować JavaScript jak nowoczesne przeglądarki? Diabeł tkwi w szczegółach, a w tym konkretnym przypadku szczegółem często jest budżet crawlowania w połączeniu z niewłaściwym wykorzystaniem JavaScriptu.
Błędne koło budżetu crawlowania
Problem pojawia się, gdy kluczowe treści z danej podstrony naszego serwisu nie znajdują się bezpośrednio w kodzie HTML strony, ale są zależne od działania znajdujących się na niej skryptów JavaScript.
Wówczas Google, po pierwszym przetworzeniu kodu HTML danej podstrony, może uznać ją za stronę niskiej jakości nie wnoszącą nic wartościowego do indeksu, ponieważ przed wykonaniem skryptów nie widzi jeszcze tych najważniejszych treści. Od budżetu crawlowania natomiast zależy pobranie każdego zasobu z naszego serwera, nie tylko kodu HTML danej podstrony, ale także dołączonych do niej plików CSS, skryptów JavaScript a nawet wywołań AJAX (XHR – XMLHttpRequest) wykonywanych przez osadzone w naszej witrynie skrypty. Wykonywanie JavaScriptu i ponowne renderowanie kodu HTML nie następuje zaś od razu, a przed renderowaniem należy pobrać wspomniane zasoby dołączone do strony.
Może się zatem zdarzyć (i zdarza się), że na pobranie dodatkowych zasobów i wyrenderowanie strony nie wystarczy budżetu crawlowania i na renderowanie trzeba będzie zaczekać dłużej, niż zwykle.
Ponieważ dotychczas przecrawlowane podstrony wyglądają na podstrony niskiej jakości, nie wnoszące nic wartościowego do indeksu wyszukiwarki, budżet crawlowania może zostać obniżony. Jeżeli tak się stanie, szanse na szybkie wykonanie skryptów JavaScript i wyrenderowanie strony, a tym samym zaindeksowanie rzeczywiście znajdujących się na stronie treści, jeszcze spadają. W takiej sytuacji wpadamy w błędne koło, w którym w wyniku zbyt niskiego budżetu crawlowania pojawiają się spore problemy z wykonywaniem znajdujących się w naszym serwisie skryptów JavaScript i zależnych od tych skryptów treści, a w wyniku problemów z wykonywaniem JavaScriptu obniża się budżet crawlowania.
Wyjście z takiego błędnego koła nie jest łatwe i nierzadko wymaga sporo czasu i doświadczenia.
Podczas optymalizacji serwisów mocno korzystających ze skryptów JavaScript należy więc zwrócić szczególną uwagę na to, do czego te skrypty są wykorzystywane. Nie ma nic złego w ich użyciu a możliwości jakie dają są ogromne i uważam, że nie powinniśmy z nich rezygnować. Należy jednak podchodzić z dużą dozą ostrożności do kluczowych dla danej podstrony treści i w miarę możliwości nie uzależniać dostępu do nich od działania JavaScriptu.
SEO kluczem do skutecznego pozycjonowania
Jak widać, czynniki obniżające budżet crawlowania niemal w całości pokrywają się z tym, na co należy zwracać uwagę wykonując optymalizację serwisu w celu jego skutecznego pozycjonowania (SEO). Nie wystarczy zatem tylko tworzyć bardzo dobre treści, ale trzeba pamiętać także o SEO – odpowiednie pozycjonowanie to jedynie połowa sukcesu.
W celu wykonania dobrej optymalizacji najlepiej zwrócić się do specjalistów posiadających odpowiednią wiedzę i doświadczenie – takie działania z pewnością zaprocentują.
Co prawda budżet crawlowania nie jest żadnym czynnikiem rankingowym w wyszukiwarce Google, ale nie można zapominać o tym, że indeksowanie jest niezbędne do tego, aby strona mogła w ogóle pojawić się w wynikach wyszukiwania na jakiejkolwiek, nawet najodleglejszej pozycji.
[1] https://www.searchenginejournal.com/javascript-indexing-delays-google/