Modelowane listy odbiorców nie zawierają konkretnych osób, tylko prawdopodobieństwa. Wyjaśniam, jak powstają, gdzie ich szukać w panelu i jak czytać ich raporty.
Robot Google nie ocenia serwisu przez pryzmat komfortu użytkownika. Ma prostsze zadanie: pobrać jak najwięcej wartościowych adresów, nie przewracając przy tym cudzego serwera. To rozróżnienie jest sedno tego tekstu, bo z niego wynikają wszystkie dalsze konsekwencje.
Trafiłem w ostatnich miesiącach na kilka serwisów, w których po przejściu na warstwę pośredniczącą liczba pobieranych dziennie adresów wyraźnie spadła. Nikt nie zmieniał treści, nie ruszał struktury linkowania, nie dodawał blokad. Zmienił się tylko sposób, w jaki żądania trafiają do aplikacji — i to wystarczyło.
Poniżej rozkładam ten mechanizm: co robot mierzy, jak reaguje na wolne odpowiedzi i błędy, w których miejscach warstwa pośrednicząca potrafi zaszkodzić i jak odróżnić jej winę od winy samej aplikacji.
Google od lat opisuje to jako dwie niezależne rzeczy: ile adresów w serwisie warto pobrać oraz ile serwer jest w stanie znieść. Pierwsze wynika z popularności i jakości treści, drugie wyłącznie z zachowania infrastruktury.
Ten drugi element działa dynamicznie. Robot obserwuje czasy odpowiedzi i kody, które dostaje. Jeśli odpowiedzi przychodzą szybko i bez błędów, stopniowo zwiększa liczbę równoległych żądań. Jeśli czasy rosną albo pojawiają się kody z rodziny błędów serwera, ogranicza tempo — czasem drastycznie i na dłużej, niż trwała sama awaria.
Konsekwencja jest niewygodna: infrastruktura decyduje o tym, ile treści zostanie w ogóle zobaczone. Serwis z dwustoma podstronami tego nie odczuje. Sklep z kilkudziesięcioma tysiącami kart produktowych odczuje natychmiast, bo przy obniżonym tempie pełny obieg po serwisie wydłuża się z dni do tygodni.
Warto tu od razu rozbroić jedno nieporozumienie. Wolna odpowiedź nie jest karą ani sygnałem obniżającym ocenę treści. Skutek jest inny i w praktyce gorszy: nowe i zaktualizowane strony po prostu czekają dłużej w kolejce.
Sieć dostarczania treści z zasady powinna przyspieszać obsługę robota, bo część odpowiedzi wychodzi z pobliskiego węzła bez angażowania aplikacji. Tak to zwykle wygląda. Problemy zaczynają się w konkretnych, powtarzalnych sytuacjach.
Najbardziej podstępny jest przypadek pierwszy, bo nie widać go w żadnym raporcie użytkowym. Dla ludzi serwis jest szybki — bo ludzie chodzą po popularnych adresach, które w węźle leżą. Dla robota jest wolny.
Osobny wątek, o którym łatwo zapomnieć: robot nie pobiera tylko dokumentu. Żeby zobaczyć stronę taką, jaką widzi użytkownik, musi też pobrać arkusze stylów i skrypty, a potem je wykonać.
Te zasoby zwykle leżą właśnie w sieci dostarczania treści i tu opóźnienie kosztuje podwójnie. Usługa renderująca ma ograniczony czas i ograniczony budżet na pobieranie zasobów podrzędnych. Jeśli plik ze skryptem odpowiada wolno albo zwraca błąd, może zostać pominięty. Strona zostanie wtedy oceniona bez części treści, którą ten skrypt dobudowuje.
W serwisach, w których treść powstaje po stronie przeglądarki, to nie jest problem teoretyczny. Widziałem karty produktowe indeksowane jako praktycznie puste, mimo że w przeglądarce wyglądały normalnie. Przyczyna leżała w jednym pliku, który przy żądaniu bez ciasteczek dostawał od warstwy ochronnej odpowiedź z błędem.
Dlatego przy diagnozie zawsze sprawdzam nie tylko adres strony, ale też adresy jej zasobów — osobno, bez sesji, bez nagłówków przeglądarki. Podejrzenia potwierdzają się częściej, niż bym chciał.
Druga rzecz, o którą warto zadbać: zasoby potrzebne do złożenia treści nie powinny być blokowane w pliku z regułami dla robotów. To wciąż zdarza się w konfiguracjach przenoszonych ze starszych wersji serwisu, gdzie blokowano całe katalogi z plikami wykonywalnymi.
Bez danych ta cała analiza jest zgadywaniem, więc konkretna kolejność.
Zaczynam od raportu statystyk pobierania w Search Console. Interesują mnie trzy przebiegi w czasie: liczba żądań, średni czas odpowiedzi i rozkład kodów. Wzrost czasu odpowiedzi z jednoczesnym spadkiem liczby żądań to podpis mechanizmu ograniczania tempa. Data przełamania w wykresie zwykle wskazuje wprost, co się wtedy zmieniło.
Potem patrzę na rozbicie po typie pobieranego zasobu i po celu pobrania. Widać z niego, czy robot traci czas na dokumenty, na obrazy, czy na skrypty, i czy pobiera głównie nowe adresy, czy odświeża stare. Serwis, w którym prawie cały budżet idzie na odświeżanie, ma problem z jakością mapy witryny albo z nadmiarem adresów.
Trzeci krok to logi serwera i logi warstwy brzegowej równolegle. To jedyne miejsce, w którym widać różnicę między czasem, jaki zmierzył robot, a czasem, jakiego potrzebowała aplikacja. Jeśli aplikacja odpowiada szybko, a robot mierzy wolno, winna jest droga pomiędzy nimi.
Na koniec test punktowy: pobranie wybranych adresów narzędziem do sprawdzania adresu URL i porównanie tego, co widzi robot, z tym, co widzi przeglądarka. To najprostszy sposób wykrycia brakujących zasobów.
Kolejność ma znaczenie, bo część zmian unieważnia wnioski z poprzednich pomiarów.
Najpierw wyłączam robota spod reguł ograniczających ruch automatyczny. Weryfikacja tożsamości robota przez adresy publikowane przez Google jest do tego właściwym sposobem — nie sam nagłówek identyfikujący klienta, bo ten łatwo podrobić.
Potem porządkuję przekierowania. Wszystkie normalizacje adresu składam w jeden skok i pilnuję, żeby linki w serwisie prowadziły od razu do wersji docelowej. Łańcuchy przekierowań zjadają budżet pobierania w sposób całkowicie niepotrzebny.
Trzeci krok to reguły przechowywania odpowiedzi w węźle dla adresów, których ludzie odwiedzają rzadko. Nawet krótki czas życia kopii zmienia obraz, bo robot chodzący po archiwum przestaje przy każdym adresie budzić aplikację.
Czwarty, najbardziej niewdzięczny: ograniczenie liczby adresów, które w ogóle warto pobierać. Filtry generujące nieskończone kombinacje parametrów, paginacja bez końca, warianty sortowania — to wszystko konkuruje o ten sam budżet z kartami produktów, na których nam zależy. Zwykle jest to praca do wykonania w serwisie, nie w konfiguracji sieci.
Zamknę dwoma zdaniami ostrożności, bo temat łatwo przesadzić w drugą stronę.
Skrócenie czasu odpowiedzi nie jest dźwignią do podnoszenia pozycji. Google nie nagradza szybkiego serwera lepszymi wynikami — po prostu przestaje ograniczać tempo pobierania. Jeśli serwis miał kłopot z widocznością z powodu treści, po poprawie infrastruktury nadal będzie go miał, tylko szybciej się o tym dowiemy.
Nie ma też jednego progu, po przekroczeniu którego robot zwalnia. Zależy to od rozmiaru serwisu, historii i tego, jak stabilne są odpowiedzi. Zamiast szukać magicznej liczby, patrzę na kierunek zmian w czasie i na stabilność — bo wahania są dla robota gorszym sygnałem niż stale przeciętny, ale przewidywalny czas odpowiedzi.
Ostatnia uwaga praktyczna. Zmiany w warstwie dostarczania treści mają tę nieprzyjemną własność, że skutek w indeksowaniu widać z opóźnieniem liczonym w tygodniach. Warto więc zapisywać daty wdrożeń w jednym miejscu, bo bez tego za dwa miesiące nikt nie połączy spadku pobrań z konfiguracją zmienioną w piątek po południu.
Używamy plików cookies, aby ułatwić Ci nawigację oraz wykonywanie określonych funkcji. Szczegółowe informacje o wszystkich plikach cookies znajdziesz w każdej kategorii zgody poniżej.
Pliki cookies oznaczone jako "Niezbędne" są przechowywane w Twojej przeglądarce, ponieważ są one kluczowe dla zapewnienia podstawowych funkcji strony.
Używamy również plików cookies firm trzecich, które pomagają nam analizować, w jaki sposób korzystasz z tej strony, zapamiętują Twoje preferencje oraz dostarczają treści i reklamy odpowiednie dla Ciebie. Te pliki cookies będą przechowywane w Twojej przeglądarce tylko za Twoją uprzednią zgodą.
Możesz zdecydować, czy chcesz włączyć lub wyłączyć niektóre bądź wszystkie te pliki cookies, jednak wyłączenie niektórych z nich może wpłynąć na Twoje doświadczenia podczas przeglądania strony.
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| __cf_bm | 13 minutes | Cloudflare bot management — distinguishes humans from bots. |
| rc::* | Persistent | Google reCAPTCHA — localStorage holding anti-bot challenge state. |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| wpEmojiSettingsSupports | Session | WordPress — sessionStorage flag caching whether the browser can render emoji (feature detection). |
| ytidb* | Persistent | YouTube — IndexedDB storing playback/search state for embedded videos. |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| _ga_* | 400 days | Google Analytics 4 — persists session state per property. |
| _ga | 400 days | Google Analytics — distinguishes unique users via a client id. |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| NID | 183 days | Google — stores preferences for personalized ads. |
| fr | 90 days | Meta — encrypted Facebook id and browser id for ads. |
| _gcl_au | 90 days | Google AdSense/Ads — experiments with advertising efficiency (conversion linker). |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| __Secure-YNID | 180 days | |
| YSC | Session | |
| __Secure-ROLLOUT_TOKEN | 180 days | |
| VISITOR_INFO1_LIVE | 180 days | |
| VISITOR_PRIVACY_METADATA | 180 days | |
| datr | 400 days | |
| sb | 400 days | |
| wd | 7 days |