← Wszystkie posty6 min czytania

Post · 13

SSR vs CSR SEO: co wybrać dla publicznej strony

SSR vs CSR SEO: dla publicznej strony, której treść ma trafiać do Google i crawlerów AI, wybrałbym renderowanie zapewniające treść w HTML z serwera, czyli SSR lub SSG. Google potrafi wykonać JavaScript, ale główne crawlery AI opisane w badaniu Vercel i MERJ go nie wykonują.

  • SEO
  • SSR
  • CSR
  • indeksacja

Najważniejsza różnica dotyczy tego, co crawler dostaje bez JavaScriptu

Przy wyborze SSR czy CSR łatwo skupić się wyłącznie na tym, czy Google potrafi odczytać aplikację korzystającą z JavaScriptu. Potrafi. To jednak nie kończy tematu, bo publiczną stronę odwiedzają również inne crawlery, a ich możliwości nie są identyczne.

W przypadku treści ważnej dla wyszukiwarki i systemów AI kluczowe pytanie brzmi więc inaczej: czy najważniejsza zawartość strony znajduje się już w HTML otrzymanym przez crawlera, czy pojawia się dopiero po wykonaniu JavaScriptu?

Jeżeli treść jest dostępna w HTML z serwera, crawler może ją odczytać bez dodatkowego renderowania po swojej stronie. Taki sposób dostarczenia treści dają SSR i SSG. Jeżeli natomiast strona opiera się na CSR i istotna zawartość pojawia się dopiero po wykonaniu JavaScriptu w przeglądarce, rezultat zależy od tego, czy konkretny crawler ten JavaScript rzeczywiście uruchamia.

To rozróżnienie jest ważniejsze niż proste stwierdzenie, że jedna metoda renderowania jest zawsze dobra, a druga zawsze zła. CSR nadal ma zastosowania, szczególnie tam, gdzie widoczność w wyszukiwarkach nie jest celem. Problem zaczyna się wtedy, gdy od wykonania JavaScriptu uzależniasz dostęp do treści, która ma być indeksowana albo odczytywana przez zewnętrzne systemy.

W praktyce oznacza to, że przy stronie firmowej, artykule, stronie usługi lub innej publicznej treści nie można zakładać, że każdy crawler zachowa się tak samo jak współczesny Googlebot. To założenie staje się szczególnie istotne wraz z rosnącym ruchem crawlerów wykorzystywanych przez narzędzia AI.

Googlebot renderuje JavaScript, ale robi to po pobraniu strony

Google opisuje przetwarzanie stron korzystających z JavaScriptu jako proces obejmujący pobranie strony, a następnie renderowanie jej przez Web Rendering Service korzystający z Chromium. Strona wymagająca wykonania JavaScriptu może więc zostać przez Google wyrenderowana, a jej treść może trafić do indeksu.

Nie oznacza to jednak, że zawartość generowana wyłącznie przez JavaScript jest dla Google równoważna z treścią dostępną od razu w HTML. Renderowanie trafia do kolejki. Jeżeli najważniejsza treść strony pojawia się dopiero po wykonaniu JavaScriptu, jej przetworzenie może nastąpić później. Dokumentacja Google wskazuje też dwie sytuacje, w których wynik może być niepełny: zablokowane zasoby oraz JavaScript, który się nie wykona.

Nie ma za to podstaw, by przypisywać CSR konkretny stały czas indeksacji ani twierdzić, że SSR zawsze trafi do indeksu w określonej liczbie godzin. Udokumentowany mechanizm jest prostszy: Google potrafi renderować JavaScript, ale zawartość zależna od jego wykonania przechodzi przez dodatkowy etap przetwarzania.

Dla właściciela strony konsekwencja jest praktyczna. Jeśli tekst opisujący usługę, produkt albo artykuł ma znaczenie dla widoczności organicznej, nie uzależniałbym dostępu do tej treści od poprawnego wykonania JavaScriptu przez crawlera. Dostarczenie jej w HTML z serwera usuwa ten warunek.

Szczegóły dotyczące konfiguracji frameworka i elementów technicznych opisuję osobno we wpisie Next.js a SEO. Tutaj istotniejszy jest sam sposób, w jaki różne roboty dochodzą do treści.

Crawlery AI w większości nie wykonują JavaScriptu

Różnica staje się wyraźniejsza, gdy poza Googlebotem spojrzysz na crawlery związane z systemami AI. Badanie Vercel i MERJ z grudnia 2024 roku pokazało, że żaden z analizowanych głównych crawlerów AI, poza infrastrukturą wykorzystywaną przez Gemini, nie renderował JavaScriptu.

W badaniu uwzględniono między innymi crawlery OpenAI (OAI-SearchBot, ChatGPT-User i GPTBot), ClaudeBot, crawlery Meta i ByteDance oraz PerplexityBot. ChatGPT i Claude pobierały część plików JavaScript, ale samo pobranie pliku nie oznaczało jego wykonania. Dla ChatGPT pliki JS stanowiły 11,50% zapytań, a dla Claude 23,84%. Wyjątkiem jest Gemini, który korzysta z infrastruktury Googlebota i renderuje JavaScript.

Skala aktywności tych robotów pokazuje, dlaczego nie jest to już poboczny problem techniczny. W badanym miesiącu GPTBot wykonał 569 mln zapytań, a Claude 370 mln. Łącznie odpowiadało to za około 20% z 4,5 mld zapytań wykonanych przez Googlebota w sieci Vercel.

Nie wynika z tego, że sama obecność treści w HTML zagwarantuje cytowanie w odpowiedzi AI. Wynika natomiast coś bardziej podstawowego: crawler, który nie wykonuje JavaScriptu, nie zobaczy treści dostępnej wyłącznie po jego wykonaniu. Jeśli zależy Ci na tym, aby publiczna treść mogła zostać odczytana również przez takie systemy, HTML dostarczony przez serwer usuwa tę przeszkodę.

Dziś publiczną treść pobierają systemy działające według różnych zasad, dlatego jej dostępność warto projektować pod więcej niż jeden rodzaj crawlera, a nie wyłącznie pod indeksację w Google.

SSR i SSG dają treść w HTML, CSR zostawia ją przeglądarce

SSR i SSG łączy jedna najważniejsza właściwość: treść potrzebna do SEO i odczytu przez crawlery może znaleźć się w HTML otrzymanym z serwera. CSR przenosi renderowanie do przeglądarki i dlatego w przypadku zawartości pojawiającej się dopiero po wykonaniu JavaScriptu wymaga od crawlera dodatkowej możliwości.

Dlatego przy publicznych stronach internetowych nie sprowadzałbym decyzji do stwierdzenia, że Google „radzi sobie z JavaScriptem”. Radzi sobie, ale część innych crawlerów nie wykonuje go wcale. Jeśli ta sama strona ma być dostępna zarówno dla wyszukiwarki, jak i dla systemów AI pobierających publiczny internet, wspólnym mianownikiem pozostaje gotowa treść w HTML.

Nie oznacza to, że cała aplikacja musi być budowana według jednej metody. Z punktu widzenia widoczności liczy się przede wszystkim to, gdzie znajduje się treść, którą chcesz udostępnić robotom. Jeśli buduję publiczną stronę w Next.js, traktuję renderowanie serwerowe albo statyczne jako naturalny punkt wyjścia dla zawartości, która ma pracować w wyszukiwarce. Więcej o samej usłudze piszę na stronie tworzenie stron Next.js.

SSR
Treść w HTML z serwera: Tak
Google: Czyta treść bez wykonywania JavaScriptu
Główne crawlery AI z badania: Czytają treść bez wykonywania JavaScriptu
SSG
Treść w HTML z serwera: Tak
Google: Czyta treść bez wykonywania JavaScriptu
Główne crawlery AI z badania: Czytają treść bez wykonywania JavaScriptu
CSR
Treść w HTML z serwera: Treść może pojawić się dopiero po wykonaniu JavaScriptu
Google: Wykonuje JavaScript w kolejce renderowania
Główne crawlery AI z badania: Nie wykonują JavaScriptu, poza Gemini korzystającym z infrastruktury Googlebota

CSR ma sens tam, gdzie widoczność organiczna nie jest potrzebna

CSR nie jest błędem samym w sobie. Renderowanie po stronie przeglądarki jest rozsądnym wyborem w obszarach za logowaniem, w panelach oraz w aplikacjach, dla których SEO nie ma znaczenia. Brak treści w początkowym HTML nie tworzy tam tego samego problemu, bo nie oczekujesz, że publiczny crawler wyszukiwarki albo systemu AI będzie odczytywał i indeksował zawartość.

Granica jest więc dość czytelna. Jeśli użytkownik ma wejść na stronę przez wyszukiwarkę albo treść ma być dostępna dla crawlerów, dostarcz istotną zawartość w HTML z serwera. Jeżeli natomiast tworzysz zamknięty panel dostępny po zalogowaniu, przewaga SSR lub SSG wynikająca z dostępności treści dla robotów przestaje być argumentem.

To rozróżnienie pomaga uniknąć dwóch skrajności. Pierwszą jest przekonanie, że CSR automatycznie uniemożliwia indeksację w Google. Nie uniemożliwia, bo Google korzysta z Web Rendering Service. Drugą jest założenie, że skoro Google potrafi wykonać JavaScript, każda publiczna treść może bez konsekwencji zależeć wyłącznie od CSR. Badanie crawlerów AI pokazuje, że nie wszystkie roboty dysponują takim samym mechanizmem.

Core Web Vitals trzeba oceniać pomiarem, nie etykietą SSR lub CSR

Sposób renderowania nie jest zastępczym wynikiem wydajności strony. Nie ma rzetelnych podstaw, żeby przypisywać SSR i CSR stałe przedziały LCP. Zamiast zakładać wynik na podstawie architektury, lepiej odnieść się do progów Core Web Vitals podawanych przez Google. Ocena jest oparta na 75. percentylu, czyli wyniku, którego nie przekracza 75% zebranych pomiarów. Wartości uznawane za dobre to:

• LCP poniżej 2,5 s: moment wyświetlenia największego elementu treści w widoku.

• INP poniżej 200 ms: reakcja strony na interakcję użytkownika.

• CLS poniżej 0,1: nieoczekiwane przesunięcia układu.

Te wartości są użyteczne przy porównywaniu rzeczywiście działających stron, ale sam wybór SSR nie zapewni automatycznie określonego wyniku, a CSR nie musi przekroczyć któregoś z progów. Renderowanie określa przede wszystkim, czy treść jest dostępna w HTML bez wykonania JavaScriptu. Core Web Vitals mówią o doświadczeniu użytkownika mierzonym konkretnymi wskaźnikami. Jednego nie zastępuj drugim.

Jeżeli więc wybierasz technologię dla publicznej strony, najpierw zadbaj o to, aby treść przeznaczona do wyszukiwarki i odczytu przez crawlery była dostępna bez wykonywania JavaScriptu po ich stronie. Wydajność oceniaj osobno, na podstawie LCP, INP i CLS.

FAQ

Najczęstsze pytania.

Czy Google indeksuje stronę renderowaną po stronie przeglądarki?
Tak. Google może wykonać JavaScript przez Web Rendering Service korzystający z Chromium. Treść zależna od JavaScriptu przechodzi jednak przez kolejkę renderowania i może zostać przetworzona później albo niepełnie, jeśli wymagane zasoby są zablokowane lub skrypt się nie wykona.
Czy SSR jest lepsze od CSR dla publicznej strony?
Jeśli treść ma być dostępna dla Google i crawlerów AI, SSR lub SSG pozwalają umieścić ją już w HTML z serwera. CSR ma sens tam, gdzie widoczność organiczna nie jest potrzebna, na przykład w panelach i aplikacjach za logowaniem.
Czy ChatGPT, Claude i Perplexity wykonują JavaScript podczas crawlowania?
W badaniu Vercel i MERJ z grudnia 2024 główne analizowane crawlery AI, w tym crawlery OpenAI, Anthropic i Perplexity, nie renderowały JavaScriptu. ChatGPT i Claude pobierały część plików JS, ale ich nie wykonywały. Gemini korzysta z infrastruktury Googlebota i renderuje JavaScript.
Czy samo SSR poprawi moje Core Web Vitals?
Nie automatycznie. Google ocenia Core Web Vitals na podstawie 75. percentyla, a progi dobrego wyniku to LCP poniżej 2,5 s, INP poniżej 200 ms oraz CLS poniżej 0,1. Wynik trzeba zmierzyć na działającej stronie, a nie zakładać na podstawie samego sposobu renderowania.
Kiedy wybrać CSR zamiast SSR lub SSG?
CSR sprawdza się w obszarach, w których SEO nie ma znaczenia: za logowaniem, w panelach klienta i w aplikacjach. Tam treść nie musi być widoczna dla publicznych crawlerów, więc renderowanie w przeglądarce nie ogranicza widoczności.

Autor

Marcin Siwonia
Marcin Siwonia

Programista z Wrocławia. Od 2020 roku tworzę strony i aplikacje internetowe, od końca 2022 na własny rachunek. Ponad 30 wdrożeń komercyjnych dla firm z Polski i Niemiec, głównie WordPress, WooCommerce i Next.js.

Powiązane usługi

Pogadajmy

Masz pytanie? Napisz.

Kontakt→