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.
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ě.
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.
_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.
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
Zdroje
Zdroje a použitá dokumentace
- Google Search Central: Understand JavaScript SEO Basics — developers.google.com (přístup: 2026-04-17)
- Google Search Central: Dynamic Rendering — developers.google.com (přístup: 2026-04-17)
- Google Search Central: Fix search-related JavaScript problems — developers.google.com (přístup: 2026-04-17)
- Google Search Central: Crawling and indexing overview — developers.google.com (přístup: 2026-04-17)