Kodėl SPA ir paieškos sistemos vis dar nesutaria
Vienpusio puslapio aplikacijos (SPA) architektūra yra puiki vartotojo patirties požiūriu – greita, sklandi, reaguojanti. Tačiau „Google” robotas ilgą laiką turėjo rimtų problemų su JavaScript pagrindu veikiančiais puslapiais. Nors „Googlebot” šiandien jau sugeba vykdyti JavaScript, tai nereiškia, kad viskas veiks automatiškai ir be jokių papildomų pastangų. Naujienų portalams, kur kiekvienas straipsnis turi būti indeksuotas greitai ir tiksliai, šis klausimas yra ypač opus.
Serverio pusės atvaizdavimas – ne prabanga, o būtinybė
Pirmasis ir svarbiausias žingsnis – įdiegti serverio pusės atvaizdavimą (SSR). Tai reiškia, kad kiekvienas puslapis turi būti sugeneruotas serveryje ir išsiųstas naršyklei (ar robotui) kaip pilnai užpildytas HTML dokumentas, o ne tuščias apvalkalas su JavaScript kodu.
Jei naudojate React, rimčiausias pasirinkimas šiandien yra Next.js. Angular vartotojams – Angular Universal, Vue.js – Nuxt.js. Šie sprendimai leidžia kiekvienam straipsnio URL grąžinti pilną turinį be papildomų JavaScript vykdymo žingsnių robotų pusėje.
Konfigūruojant SSR naujienų portalui, svarbu atkreipti dėmesį į kelis dalykus:
- Kiekvienas straipsnis turi turėti unikalų, statišką URL
- Serveris turi grąžinti teisingus HTTP atsakymo kodus (200 egzistuojantiems, 404 ištrintiems)
- Puslapio turinys turi būti prieinamas HTML kode prieš bet kokį JavaScript vykdymą
Meta žymės ir struktūrizuoti duomenys – robotų kalba
Kiekvienas straipsnis privalo turėti unikalias meta žymes – pavadinimą, aprašymą, canonical URL. Tai ne tik SEO formalumas, tai signalas „Google”, kad žinote, ką darote. SPA aplinkoje šias žymes reikia dinamiškai keisti kiekvienam maršrutui.
Next.js tai galima padaryti per next/head komponentą, Nuxt.js – per useHead composable. Svarbu, kad žymės būtų įrašytos HTML dokumente serverio atsakyme, o ne pridedamos vėliau per kliento JavaScript.
Naujienų portalams ypač rekomenduojama naudoti NewsArticle struktūrizuotų duomenų schemą. Ji padeda „Google” suprasti, kad tai naujienų turinys, ir gali padidinti tikimybę patekti į „Google News” srautą. Schema rašoma JSON-LD formatu ir įterpiama į kiekvieno straipsnio <head> sekciją.
XML svetainių žemėlapis – navigacinis žemėlapis robotams
Dinamiškas XML sitemap generavimas yra kitas privalomas elementas. Naujienų portalams „Google” rekomenduoja naudoti specialų News Sitemap formatą, kuris skiriasi nuo įprasto sitemap tuo, kad apima tik per paskutines 48 valandas paskelbtus straipsnius.
Sitemap turi būti automatiškai atnaujinamas kiekvieną kartą, kai paskelbiamas naujas straipsnis. Tai galima pasiekti generuojant jį dinamiškai per API endpoint arba naudojant automatizuotą statinį generavimą po kiekvieno turinio pakeitimo. Sitemap adresas turi būti nurodytas robots.txt faile.
Puslapių greitis – indeksavimo greičio atspindys
„Google” indeksavimo greitis tiesiogiai priklauso nuo to, kaip greitai robotas gali apdoroti puslapį. Lėti puslapiai indeksuojami rečiau. Naujienų portalui tai gali reikšti, kad straipsnis pasieks paieškos rezultatus per vėlai – kai aktualumas jau prarastas.
Keletas praktinių priemonių greičiui gerinti SPA kontekste:
- Naudoti statinį generavimą (SSG) ten, kur turinys nesikeičia dažnai
- Įdiegti tinkamą talpyklą (caching) serverio pusėje
- Optimizuoti vaizdus – naudoti WebP formatą, lazy loading
- Sumažinti JavaScript paketo dydį per code splitting
Kai teorija susitinka su praktika
Sukonfigūruoti SPA taip, kad „Google” patikimai indeksuotų kiekvieną straipsnį, nėra vienkartinis darbas – tai nuolatinis procesas. SSR suteikia pagrindą, struktūrizuoti duomenys – kontekstą, sitemap – kryptį, o greitis – pasitikėjimą. Visi šie elementai veikia kartu, ir praleisti bet kurį iš jų reiškia palikti spragą, pro kurią gali praslinkti svarbus turinys nepastebėtas. Naujienų portalams, kur laikas yra esminė vertė, tai nėra priimtina. Geras techninis pagrindas yra ne tik SEO reikalavimas – tai pagarbos skaitytojui ir turinio kokybei išraiška.