<link rel="stylesheet" href="/assets/fonts/jetbrains-mono/jetbrains-mono.css" />
All posts

Faqe statike, SSR apo CMS: çfarë të zgjedhësh për një biznes të vogël (rasti im real)

Kur një biznes më kërkon një faqe interneti, para dizajnit ka një zgjedhje që peshon për vite: faqe statike, rendering në server (SSR) apo CMS? Në vend që ta shpjegoj në abstrakt, e tregoj me projektin që njoh më mirë: këtë faqe.

Tri opsionet me dy rreshta

  • Faqe statike: faqet janë skedarë HTML të gatshëm, të gjeneruar një herë dhe të ngarkuar në një hosting. Shumë e shpejtë, e lirë, shumë e vështirë për t'u sulmuar. Por çdo ndryshim kërkon një publikim të ri.
  • SSR (server-side rendering): një server e gjeneron faqen në çdo kërkesë, me të dhëna gjithmonë të përditësuara. Fleksibël dhe shumë i mirë për SEO, por duhet një server gjithmonë i ndezur dhe dikush që ta mirëmbajë.
  • CMS (WordPress ose një CMS headless): pronari i ndryshon tekstet dhe artikujt nga një panel, pa zhvillues. I rehatshëm, por sjell përditësime, plugin-e dhe një sipërfaqe sulmi për t'u kujdesur.

Rasti im: një faqe Angular e publikuar si statike

Kjo faqe është një aplikacion Angular me SSR të konfiguruar, një backend NestJS të veçantë me MongoDB dhe një blog në shtatë gjuhë, artikujt e të cilit ruhen në databazë. Në letër është rasti ideal për SSR. Në praktikë, për kosto dhe thjeshtësi, frontend-i kompilohet dhe publikohet si skedarë statikë në një hosting Plesk, ndërsa backend-i punon në një shërbim të veçantë.

Funksionon, por e zbulova me lëkurën time se çfarë sjell ajo zgjedhje.

1. Pa server, SSR nuk ekziston

Me një deploy statik, rendering-u në server nuk ekzekutohet kurrë: nëse një faqe nuk gjenerohet gjatë build-it, Google merr vetëm "guaskën" bosh të aplikacionit. Kur e vura re, nga 32 URL në sitemap Google kishte indeksuar 4, dhe asnjë artikull: të gjithë hetimin e kam treguar në këtë artikull. Zgjidhja ishte prerendering-u: gjenerimi i HTML-së së çdo faqeje gjatë build-it, artikull pas artikulli dhe gjuhë pas gjuhe.

2. Qindra faqe për t'u gjeneruar në çdo build

Çdo artikull ekziston në shtatë gjuhë, ndaj faqet për t'u prerenderizuar janë qindra. Build-et e para pyesnin API-n e prodhimit për secilën: kufiri i kërkesave aktivizohej dhe disa faqe gjeneroheshin me mesazhin "artikulli nuk u gjet". E zgjidha duke shkarkuar të gjithë artikujt një herë të vetme para build-it, në një skedar cache nga i cili lexon prerendering-u:

// Before the build: download every published post once
const posts = await fetchAllPublishedPosts();
fs.writeFileSync('.prerender-cache/blog-posts.json', JSON.stringify({ posts }));
// The prerender reads this file instead of calling the API hundreds of times

3. Çdo artikull i ri kërkon një publikim të ri

Ky është kompromisi më i dukshëm: kur publikoj një artikull nga paneli, përmbajtja është menjëherë e disponueshme përmes API-t, por faqja HTML që lexon Google ekziston vetëm pas build-it të radhës dhe ngarkimit të skedarëve. Për një blog që përditësohet herë pas here është e pranueshme; për një faqe lajmesh jo.

4. Detajet e hostingut kanë rëndësi

Edhe me faqet e gjeneruara, Apache përgjigjej me një redirect 301 për secilën: çdo faqe e prerenderizuar është një dosje me një index.html brenda, dhe serveri i shtonte URL-së slash-in përfundimtar. Rregullimi ishte disa rreshta në .htaccess, por pa një kontroll me curl -I nuk do ta kisha vënë re kurrë:

<IfModule mod_dir.c>
  DirectorySlash Off
</IfModule>

Pikërisht për shkak të këtyre kompromiseve po përgatis kalimin në një container Node në Plesk, me SSR të vërtetë: kompleksiteti ishte tashmë në projekt, aq më mirë ta shfrytëzoj plotësisht.

Çfarë i rekomandoj një biznesi të vogël

Faqja ime nuk është rast tipik: është edhe një laborator. Për një biznes real, zgjedhja varet pothuajse gjithmonë nga tri pyetje: sa shpesh ndryshojnë përmbajtjet, kush i përditëson dhe sa faqe duhen.

SituataZgjedhja e rekomanduarPse
Restorant, zanatçi ose studio me 5–10 faqe që ndryshojnë disa herë në vitFaqe statikeE shpejtë, e lirë, pa server për të mirëmbajtur
Profesionist që publikon vetë artikuj ose lajmeCMSI përditëson përmbajtjet pa thirrur një zhvillues
Katalog me qindra produkte ose përmbajtje që ndryshojnë çdo ditëSSR ose platformë e-commerceFaqe gjithmonë të përditësuara dhe të indeksueshme pa rindërtuar faqen
Zonë e rezervuar, rezervime, të dhëna për përdoruesWeb app plus faqe publike statike ose SSRFaqet publike i shërbejnë SEO-së, zona e rezervuar jo

Për shumë biznese lokale, oraret, vlerësimet dhe udhëzimet rrugore kanë më shumë rëndësi se vetë faqja: një profil Google Business i kujdesur vlen shpesh më shumë se një funksionalitet shtesë.

Pyetjet që duhen bërë para se të zgjedhësh

  1. Kush do t'i përditësojë përmbajtjet, dhe sa shpesh? Nëse përgjigjja është "pronari, çdo javë", duhet një panel.
  2. Sa rëndësi ka Google? Nëse faqja jeton nga kërkimet organike, çdo faqe duhet t'i arrijë crawler-it si HTML i plotë: statike ose SSR, kurrë një single page app pa prerendering.
  3. Kush do ta mirëmbajë serverin? Një SSR ose një CMS pa përditësime plaket keq; një faqe statike mund të qëndrojë e paprekur për vite.
  4. Sa mund të rritet? Të nisesh statik dhe të kalosh në SSR është e mundur, me kusht që të zgjedhësh një arkitekturë që e lejon, siç ndodhi me mua me Angular.

Gabimet që shoh më shpesh

  • Një CMS i rëndë për pesë faqe që nuk ndryshojnë kurrë: plugin-e për t'u përditësuar dhe rreziqe sigurie pa asnjë përfitim.
  • Një single page app pa prerendering për një faqe që duhet të gjendet: e këndshme në përdorim, e padukshme për motorët e kërkimit.
  • Zgjedhja e SSR-së pa buxhet për ta mirëmbajtur: një server duhet monitoruar, përditësuar dhe paguar çdo muaj.

Në përmbledhje

Nuk ekziston teknologjia më e mirë në absolut: ekziston ajo që i përshtatet mënyrës si përditësohen përmbajtjet dhe kujt i menaxhon. Për shumicën e bizneseve të vogla një faqe statike e bërë mirë është zgjedhja më solide; një CMS ka kuptim kur pronari do autonomi; SSR duhet kur përmbajtjet janë shumë dhe ndryshojnë shpesh. Faqja ime më mësoi se çdo zgjedhje ka një kosto të fshehur: e rëndësishme është ta njohësh që më parë. Nëse po vlerëson një projekt, më shkruaj dhe nisemi nga këto pyetje.

💬 Shënime nga lexuesit

0 shënime

Shkruaj një shënim

Ndaj mendimin tënd, një sugjerim ose një kompliment

Shënimet e fundit

Ende asnjë shënim. Bëhu i pari që komenton!