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 jazykovRouter.svelte: Hneď po inicializovaní kontroluje zloženie URL cezLangDetectModule.svelte, ak v nej chýba jazyk pridá ho. Taktiež monitoruje zmeny momentálneho jazyka vLanguageStore.sveltea ak k zmene dôjde zmení jazyk v URL. Všetky zmeny sú exportované naspäť doApp.sveltecez bind:fullslug parameterNav.svelte: Pred všetky odkazy začínajúce s "/" pridá momentálny jazyk pre lokalizáciu.Header.svelteaFooter.svelte: Pred odkazy na všetky stránky pridá momentálny jazyk.LangSelector.svelte: Mení len momentálny jazyk vLanguageStore.sveltepodľa výberu používateľa, zmenu adresy riešiRouter.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é.