Slovníček pojmů · Technické SEO

AJAX SEO

AJAX umožňuje webům načítat obsah bez obnovení stránky. Pro Googlebot to znamená extra práci: obsah načítaný přes JavaScript se do indexu dostane se zpožděním hodin až dní, nebo se tam nedostane vůbec.

2
vlny indexace při JS renderingu
2015
rok zrušení AJAX crawling scheme
dny
možné zpoždění Wave 2 renderingu

Základ

Co je AJAX a proč ho Google musí zpracovávat jinak než HTML

AJAX (Asynchronous JavaScript and XML) je technika, která umožňuje webové stránce načítat a odesílat data na pozadí bez toho, aby se celá stránka znovu načetla ze serveru. Výsledkem je plynulejší uživatelský zážitek. Zároveň to ale znamená, že obsah stránky neexistuje v HTML odpovědi serveru, ale vznikne až v prohlížeči po spuštění JavaScriptu.

Právě tady začíná SEO problém. Součást technického SEO je zajistit, aby Googlebot váš obsah viděl. A Googlebot nepracuje jako prohlížeč.

Co vidí prohlížeč a co vidí Googlebot

Když otevřete stránku s AJAX obsahem v prohlížeči, ten stáhne JavaScriptový kód, spustí ho a teprve pak zobrazí výsledný obsah. Uživatel to nevnímá, celý proces trvá zlomky sekundy.

Googlebot pracuje odlišně. Při první návštěvě URL si stáhne surové HTML ze serveru a prohledá ho. Pokud je v HTML místo obsahu jen prázdný kontejner nebo minimální shell, Googlebot v první vlně nezíská žádná smysluplná data. Obsah se mu dostane do ruky až ve druhé vlně zpracování, kdy Google stránku renderuje přes Web Rendering Service. A to může trvat podstatně déle.

Wave 1 — Googlebot stáhne HTML

Server vrátí HTML odpověď. Pokud je obsah generován JavaScriptem na straně klienta, Googlebot vidí prázdný shell. Obsah v indexu chybí.

Wave 2 — WRS renderuje JavaScript

Googlebot zařadí stránku do renderovací fronty. Google Web Rendering Service spustí JavaScript a obsah předá do indexu. Proběhne hodiny až dny po Wave 1.

Jak to funguje

Jak Google zpracovává AJAX a JavaScript obsah v roce 2025

Google AJAX a JavaScript weby indexovat umí. Ale umí neznamená okamžitě a spolehlivě. Klíčový mechanismus, který potřebujete znát, je dvoukolová indexace.

Wave 1 a Wave 2 indexace

Googlebot zpracovává stránky ve dvou oddělených fázích. Wave 1 proběhne rychle: Googlebot navštíví URL, stáhne surové HTML a zpracuje vše, co je v odpovědi serveru hned k dispozici. Nadpisy, text, interní odkazy, meta tagy, kanonické tagy. Pokud je HTML prázdný shell, Google z první vlny nezíská téměř nic.

Wave 2 přichází později. Google zařadí stránku do renderovací fronty a v samostatné fázi ji zpracuje přes Web Rendering Service (WRS) na bázi Chromia. WRS spustí JavaScript, sestaví výsledný DOM a obsah stránky předá do indexu. Tato fáze může proběhnout hodiny, ale i několik dní po první návštěvě.

Wave 1 Wave 2
Co se děje Stažení a parsování HTML Spuštění JavaScriptu, renderování přes WRS
Rychlost Sekundy až minuty Hodiny až dny
Co Google získá Statický obsah přímo v HTML Dynamicky generovaný obsah
Hlavní riziko Prázdná stránka — nic k indexaci Zpoždění, výpadek renderingu, timeout

Co to v praxi znamená pro váš web

Pokud váš web používá čistě client-side rendering a veškerý obsah generuje JavaScript v prohlížeči, jste závislí na Wave 2. Obsah se do indexu dostane, ale s rizikem.

Čerstvý obsah se zpozní

Nově zveřejněná stránka se ve výsledcích hledání neobjeví hned, ale až po renderingu Wave 2 — tedy s prodlevou hodin až dní.

Nízká autorita = vyšší riziko

Stránky s nižší autoritou nebo na webu s malým crawl budgetem nemusí být renderovány vůbec, pokud Google jejich frontu nezpracuje.

Timeout = prázdný index

Při výpadku nebo timeoutu JS renderingu zůstane stránka v indexu bez obsahu, i když pro uživatele funguje správně.

Doporučení Google Search Central: Kritický obsah stránky by měl být dostupný v HTML odpovědi serveru přímo, bez nutnosti JavaScriptu. Server-side rendering zajistí, že Googlebot obsah získá v Wave 1 bez čekání na renderovací frontu.

Historie

Deprecated AJAX crawling scheme: co to bylo a proč Google schéma zrušil

Do roku 2015 existoval problém s indexací AJAX stránek mnohem ostřeji. Google tehdy nedokázal JavaScript spolehlivě renderovat, takže obsah načítaný přes AJAX byl pro vyhledávač neviditelný. V roce 2009 Google představil tzv. AJAX crawling scheme jako pracovní řešení.

Schéma fungovalo takto: webmaster přidal do URL speciální #! (hashbang) notaci. Google místo takové URL požadoval verzi s parametrem _escaped_fragment_. Server byl povinen vrátit statickou HTML verzi stránky speciálně pro crawlery.

Původní URL pro uživatele:
  https://example.com/products#!category=shoes

URL, kterou Google požadoval místo ní:
  https://example.com/products?_escaped_fragment_=category=shoes

Schéma bylo složité na implementaci a náchylné na riziko cloak penalizace. Pokud se obsah pro crawlery a obsah pro uživatele lišil, šlo o porušení pravidel Googlu.

V roce 2015 Google oznámil, že Googlebot je schopen renderovat JavaScript a AJAX crawling scheme označil jako zastaralý (deprecated). Dnes ho vývojáři nemají implementovat. Pokud na něj narazíte ve starém kódu, odstraňte ho a nahraďte moderním přístupem popsaným v následující sekci.

Pozor: Pokud váš web stále používá _escaped_fragment_ parametry nebo hashbang URL notaci, jde o zastaralou implementaci z doby před 2015. Google ji sice nepenalizuje aktivně, ale aktivně ji nepodporuje. Moderní řešení jsou SSR, dynamic rendering nebo prerendering.

Řešení

Tři přístupy k řešení: SSR, Dynamic Rendering a Prerendering

Pokud zjistíte, že Googlebot váš AJAX obsah nevidí nebo indexuje se zpožděním, máte tři technická řešení. Liší se náročností implementace, rizikem a vhodností pro různé typy projektů.

Server-Side Rendering (SSR)

Server vygeneruje kompletní HTML stránku ještě před odesláním prohlížeči. Googlebot dostane v Wave 1 plný obsah bez čekání na JavaScript. Jde o nejspolehlivější přístup z pohledu indexace, který Google explicitně doporučuje.

Vhodné pro

Nové projekty, weby na Next.js (React) nebo Nuxt.js (Vue), weby kde je rychlost indexace kritická — zpravodajství, e-shopy, landing pages.

Náročnost implementace

Vysoká při migraci ze stávajícího CSR řešení. Nízká u projektů stavěných od začátku na SSR frameworku.

Dynamic Rendering

Server rozpozná, jestli požadavek přichází od Googlebota nebo od normálního uživatele, a crawlerům vrátí předem vyrenderovanou statickou HTML verzi stránky. Uživatelé dostanou standardní JS aplikaci.

Vhodné pro

Legacy aplikace kde migrace na SSR není krátkodobě reálná, e-shopy s velkou produktovou katalogizací.

Riziko

Google dynamic rendering považuje za dočasné, ne trvalé řešení. Pokud se obsah pro crawlery a uživatele liší příliš, hrozí postih za cloaking.

Prerendering

Statické HTML verze stránek se vygenerují dopředu při buildu nebo na vyžádání a uloží do cache. Crawlerům se servírují tyto statické verze.

Vhodné pro

Obsah, který se nemění často — marketingové weby, dokumentace, slovníčkové stránky.

Riziko

Obsah může být zastaralý, pokud se prerender nespouští dostatečně často po aktualizacích.

SSR Dynamic Rendering Prerendering
Složitost implementace Vysoká (migrace) / Nízká (nový projekt) Střední Nízká
Spolehlivost indexace Nejvyšší Střední Střední
Riziko cloak penalizace Žádné Střední Nízké
Vhodnost Nové projekty, JS frameworky Legacy aplikace Statický obsah
Doporučení Google Ano, preferované Dočasné řešení Situačně

Praktický postup

Jak zjistit, jestli Google váš AJAX obsah indexuje

Nejrychlejší způsob, jak ověřit, co Googlebot na vaší stránce skutečně vidí, je URL Inspection Tool v Google Search Console. Nepracujete s dohady, ale s přesným snímkem toho, jak Google vaši stránku renderuje.

  • Otevřete Google Search Console a v levém menu klikněte na URL Inspection (Kontrola URL).
  • Zadejte URL stránky, u které máte podezření na problém s indexací AJAX obsahu. Stiskněte Enter.
  • GSC zobrazí aktuální stav indexace — jestli je stránka v indexu, kdy ji Google naposledy crawloval a jestli byly zjištěny problémy.
  • Klikněte na „Test Live URL“ (Testovat živou URL). Google spustí čerstvý crawl a rendering přímo z rozhraní. Počkejte 30–60 sekund.
  • Po dokončení testu klikněte na „View Tested Page“ a otevřete záložku Screenshot. Vidíte přesně to, co Googlebot zobrazil po spuštění JavaScriptu. Pokud je screenshot prázdný nebo chybí klíčový obsah, Googlebot váš AJAX obsah nevidí.
  • Otevřete záložku „More Info“ a zkontrolujte „Page Resources“ — GSC zobrazí, které JS soubory se podařilo načíst a které byly blokovány. Blokovaný JS soubor přes robots.txt je přímá příčina neviditelného obsahu.
  • Porovnejte zdrojový HTML kód s renderovanou verzí. Otevřete v prohlížeči stránku, klikněte pravým tlačítkem a zvolte „Zobrazit zdrojový kód“ (Ctrl+U). Pokud klíčový obsah v surovém HTML není, ale ve screenshotu z GSC ano, jste závislí na Wave 2 indexaci.
Pokud screenshot v GSC ukazuje prázdnou stránku, zkontrolujte: jestli robots.txt neblokuje JS soubory potřebné pro rendering, jestli stránka vrací HTTP 200 (ne soft 404), a jestli váš JavaScript neobsahuje chyby, které zastavují rendering před dokončením.

Výkon

AJAX a crawl budget — kdy to začne být problém

Renderování JavaScriptu je pro Googlebota výpočetně nákladnější než zpracování statického HTML. U velkých webů s tisíci AJAX stránkami to přispívá ke spotřebě crawl budgetu rychleji, než byste čekali. Podrobněji se tomuto tématu věnujeme v článku o tom, co je crawl budget a jak ho řídit.

Časté otázky

FAQ — nejčastější otázky o AJAX SEO

Ne automaticky. Google JavaScript a AJAX obsah renderovat umí. Problém nastává, pokud je veškerý obsah stránky závislý na client-side renderingu. V takovém případě se obsah dostane do indexu až ve druhé vlně zpracování, což může trvat dny. Weby se SSR nebo předrenderovaným HTML mají spolehlivější a rychlejší indexaci.
Nejjednodušší způsob je URL Inspection Tool v Google Search Console. Spusťte test živé URL, otevřete záložku Screenshot a uvidíte přesně to, co Googlebot po spuštění JavaScriptu zobrazí. Pokud je screenshot prázdný nebo obsah chybí, Googlebot váš obsah nevidí.
Ne vždy, ale pro weby, kde je rychlost indexace a organická viditelnost klíčová (zpravodajství, e-shopy, landing pages), je SSR nejspolehlivější řešení. Pro weby s obsahem, který se nemění rychle, může jako přechodné řešení posloužit dynamic rendering nebo prerendering.
Dynamic rendering je přístup, kdy server rozpozná požadavek Googlebota a vrátí mu předem vyrenderovanou statickou HTML verzi stránky, zatímco uživatelé dostávají standardní JavaScript aplikaci. Google ho označuje za dočasné, ne trvalé řešení. Hodí se pro legacy aplikace, kde migrace na SSR není v krátkodobém horizontu reálná.
AJAX SEO je podmnožina širšího tématu JavaScript SEO. JavaScript SEO zahrnuje veškeré aspekty optimalizace webů postavených na JavaScriptu pro vyhledávače — od struktury SPA aplikací přes správu HTTP stavových kódů až po interní odkazování. AJAX SEO se zaměřuje konkrétně na weby, kde se obsah dynamicky načítá přes asynchronní požadavky na pozadí.

Zdroje

Zdroje a použitá dokumentace

Samuel Krištof — CEO PŘESAH.agency

Autor článku

Samuel Krištof

CEO & CMO · PŘESAH.agency

SEO Online marketing Správa PPC Sociální sítě Emailing

Marketingu se věnuji od roku 2017. Začínal jsem ve Fajn skupině, kde jsem budoval komunity na Facebooku a záhy přešel k placeným kampaním — pod vedením Janči Skalkové jsem nasbíral základy, které používám dodnes. Postupně jsem se dostal k SEO, automatizacím a celkové správě marketingu. Dnes působím jako CEO agentury PŘESAH a zároveň jako externí CMO ve společnosti Bohemian Estates.

Obsah článku je ověřen vůči oficiálním zdrojům Google Search Central a Ahrefs.

Přejít nahoru