Skip to content

7. SEO a Analytics

Prerenderovanie

Keďže crawleri si nevedia dať rady s 100% JavaScript stránkou:

public/index.php pomocou vlastných funkcií, Cockpit a CockpitQL prerenderuje pre všetky User-Agenty v súbore stránku. Ostatným User-Agentom dodá svelte.html, kde je nalinkovaný hlavný skript bundle.js, ktorý už rieši zvyšok stránky.

Na prerenderovanie je momentálne využívaná free služba prerender.io s limitom 250 stránok, preto je zároveň úlohou index.php volať prerender_request na čo najmenej unikátnych stránok.

Jazyky

Podporované jazyky sú separátne definované v App.svelte, public/index.php a cockpit/config/config.yaml.

Jazyky v URL

Jazyk je vždy uložený v LanguageStore.svelte, odkiaľ k nemu pristupujú komponenty podľa dvoch potrieb:

  • App.svelte: Počiatočná inicializácia podporovaných jazykov
  • Router.svelte: Hneď po inicializovaní kontroluje zloženie URL cez LangDetectModule.svelte, ak v nej chýba jazyk pridá ho. Taktiež monitoruje zmeny momentálneho jazyka v LanguageStore.svelte a ak k zmene dôjde zmení jazyk v URL. Všetky zmeny sú exportované naspäť do App.svelte cez bind:fullslug parameter
  • Nav.svelte: Pred všetky odkazy začínajúce s "/" pridá momentálny jazyk pre lokalizáciu.
  • Header.svelte a Footer.svelte: Pred odkazy na všetky stránky pridá momentálny jazyk.
  • LangSelector.svelte: Mení len momentálny jazyk v LanguageStore.svelte podľa výberu používateľa, zmenu adresy rieši Router.svelte

Sitemap

sitemap.php (vlastná implementácia) vygeneruje vždy aktuálne XML na základe Pages štruktúry v Cockpite

Analytics

Stránka momentálne nevyužíva Google Analytics. Zbiera len informácie o smere navigácie v rámci stránky, stlačených vnútorných odkazoch a dĺžke zotrvania na stránke. Všetky informácie sú kompletne anonymné, nie je vložená žiadna osobná identifikácia, Cookie súbory, fingerprinting a pod.

Pre ukladanie je použitý updateCounter() (v App.svelte) prepojený s routerom cez afterReroute prop, dodatočná climbToSection() funkcia pre získanie sekcie v rámci ktorej došlo k navigácií, stamp pre prepočet času na stránke v UNIX formáte a prevSlug v kombinácií so slug pre uloženie smeru navigácie.

Zo strany servera je POST spracovaný:

  • Je kontrolované či odoslané dáta neprekračujú dĺžku
  • Je kontrolované či s dátami nebolo manipulované, resp. obsahujú to čo majú
  • Je k dátam pridaný timestamp

Toto reálne nezabraňuje nechcenej manipulácií dát tretími stranami, avšak poskytuje dostatočnú ochranu pred absolútne falošnými dátami. Pre kompletnú ochranu by bol nutný fingerprinting minimálne Cookie súbormi a bolo by teda nutné používateľa stránky informovať (GDPR, ...).

Favicons

Generované cez Real Favicon Generator, poskytujú aj Node CLI, to avšak nie je momentálne použité.