Dve rôzne stránky
Keď si otvoríte web, prehliadač stiahne HTML a potom spustí JavaScript, ktorý môže obsah doplniť, zmeniť alebo vytvoriť celý. Vy vidíte výsledok po oboch krokoch.
Robot nemusí. Časť agentov JavaScript nespúšťa vôbec, iní ho spúšťajú s oneskorením alebo obmedzene. Čím viac obsahu vzniká až v prehliadači, tým väčšia časť webu je pre nich neviditeľná.
Pri jazykových modeloch je to výraznejšie než pri klasických vyhľadávačoch. Google si s JavaScriptom poradí v mnohých prípadoch — spracuje stránku v druhej vlne, keď má voľnú kapacitu. Agenti, ktorí zbierajú obsah pre modely, sú v tom spravidla jednoduchší a druhú vlnu nemajú.
Overte si to za desať sekúnd
Najrýchlejšie: v prehliadači si vypnite JavaScript v nastaveniach stránky a načítajte web znova. Čo zostane, to má robot.
Presnejšie: kliknite pravým tlačidlom a zvoľte „Zobraziť zdrojový kód stránky“ — pozor, nie „Preskúmať prvok“. Zdrojový kód je to, čo prišlo zo servera; inšpektor ukazuje stav po spustení skriptov. Ak v zdrojovom kóde nenájdete text, ktorý na stránke vidíte, ten text robot nedostal.
Bez prehliadača: curl -s https://vasadomena.sk/ | wc -w spočíta slová v tom, čo poslal server. Porovnajte to s tým, koľko textu na stránke naozaj je.
Typické prejavy
- Slovo „Načítava sa“ ako finálny text. Robot dostal stránku v stave, keď ešte nič nie je, a nič lepšie sa nedozvie.
- Prázdny výpis produktov alebo článkov. Zoznam sa dopĺňa dodatočne z dát.
- Chýbajúci hlavný text. Stránka má v zdrojovom kóde len kostru a odkazy.
- Stav 200 pri neexistujúcej adrese. O adresách rozhoduje až skript v prehliadači, takže server odpovie rovnako na všetko.
- Štruktúrované dáta, ktoré vkladá skript. Práca sa spravila, ale nedoručila.
Piaty prípad je zradný, lebo v inšpektore aj vo validátore, ktorý spúšťa JavaScript, vyzerá všetko v poriadku. Overiť sa dá len v zdrojovom kóde.
Čo s tým
Riešenie je vždy to isté: poslať zo servera hotový obsah. Cesty sú tri a líšia sa cenou.
Vykresľovanie na serveri
Server pošle hotové HTML a JavaScript ho už len oživí. Je to štandardné riešenie a väčšina moderných rámcov to podporuje. Cena: prestavba, ak web takto postavený nebol.
Predgenerovanie
Stránky sa vygenerujú vopred a servírujú ako statické súbory. Vhodné pre obsah, ktorý sa nemení každú minútu. Najlacnejšie a najrýchlejšie.
Aspoň to podstatné do HTML
Ak veľká prestavba nie je na stole, dá sa aspoň zabezpečiť, že nadpisy, hlavný text a štruktúrované dáta prídu zo servera. Nie je to ideálne, ale je to rozdiel medzi „robot nevidí nič“ a „robot vidí to hlavné“.
Čo nefunguje: posielať robotom inú verziu stránky než ľuďom. Volá sa to cloaking, vyhľadávače to zakazujú a odhalia to porovnaním. Riešenie musí byť rovnaké pre všetkých.
Čo pokojne môže zostať v JavaScripte
Nie všetko treba prerábať. Bez obáv nechajte v skripte to, čo nie je obsah:
- animácie, prechody, odhaľovanie pri scrollovaní,
- rozbaľovacie menu a mobilnú navigáciu,
- formuláre a ich validáciu,
- filtre a triedenie, pokiaľ existuje aj adresa s výsledkom,
- chat, kalendár, mapu.
Hranica je jednoduchá: ak by text mal byť vo výsledku vyhľadávania alebo v odpovedi modelu, musí prísť zo servera. Všetko ostatné je vzhľad a správanie a tam JavaScript patrí.
Koľko je dosť
Neexistuje oficiálna hranica a nikto ju nezverejnil. Praktické pravidlo: ak zo servera príde menej než dvesto slov zmysluplného textu, stránka má pre roboty veľmi málo materiálu. Pri stránke, ktorá má niečo vysvetliť alebo predať, je to málo bez ohľadu na to, ako vyzerá v prehliadači.