Statisk sidegenerering
Hvorfor brenner jeg sånn for statisk HTML?
Bilde av Miguel Á. Padriñán fra Pexels
De som kjenner meg og som kanskje har lest bloggen min de siste årene har nok ikke unngått å høre meg snakke varmt om statisk sidegenerering. Så hvorfor brenner jeg så varmt for det? Jo nå skal du høre (lese)!
I den spede begynnelse av min tid som "utvikler" og nettsideeier, vi kalte oss selv for webmaster den gangen for det var så kult, så var statiske sider det man ofte endte med å lage. På 90-tallet satt jeg i Netscape 3.01 Gold og lagde meg hjemmeside. Så oppdaget jeg PHP og etter hvert CMS.
En gang i tiden skrev jeg PHP-script som lot meg enkelt notere ned som i en dagbok og lage logg over endringer. Den gangen het det weblog. Det het det før man forkortet det ned til blog. Det var den gang det gikk myter om at man kunne tjene penger på å skrive weblog. Lite visste jeg da at jeg over 20 år senere skulle snakke varmt om statiske HTML-filer igjen.
Jeg skal også begynne med å si at å generere statiske HTML-filer ikke er løsningen på alt. Det passer ikke i enhver situasjon. Er man svært avhengig av å ha en dynamisk løsning hvor innholdet endrer seg eller skal presenteres for ulikt publikum så passer det ikke så godt med statiske filer.
Man trenger også mekanismer som fanger opp endringer av innholdet og genererer filene på nytt. Så det ligger litt mer arbeid bak for et godt generert nettsted enn hva man skulle tro. Men det gjør det bak ethvert oppsett av et CMS.
For noen år siden var jeg i et jobbintervju (som gikk riktig så dårlig) i et stort mediehus. De driftet nettaviser og reklameavdelingen lagde nettsteder for små kunder. Der ble det snakk på statisk sidegenerering. Det var da det slo meg at jeg følte meg alene om å se fordelen med å lage gode og raske nettsider.
Jeg måtte argumentere for fordelen ved å ha en rask nettside og tryggheten. Det eneste motargumentet jeg fikk var at kunden måtte se endringene på forsiden sin med en gang.
Jeg fikk aldri den jobben. Det gjør ikke noe. Jeg forsto under intervjuet at måten de jobbet på og tankesettet lå 4-5 år etter det jeg holdt på med til daglig. I dag er jeg glad for å slippe å måtte forholde meg til en tankegang hvor kolleger ikke kan vente på at en side skal genereres. Noe som tar like kort tid som å laste en side eller regenerere cache for å få se endringer man har gjort.
Om jeg ikke husker feil så tror jeg det var inspirasjonen til å skrive et kort proof of concept og blogginnlegg om hvordan man kunne bruke Wordpress som avkoblet CMS for statisk sidegenerering. En kode jeg forøvrig ikke har vedlikeholdt siden da.
Men det er også mulig å ha en kombinasjon av disse to. Et eksempel er nettbutikk. Visningen av et produkt i en nettbutikk være statisk. Navn og informasjon, bilder og de tekniske dataene endrer seg svært sjelden for et produkt. Skulle prisen endre seg så kan man regenerer den. Selve kjøpsprosessen ved å endre mengde, variant og legge til å handlekurv osv. være dynamisk via f.eks. et javascript-rammeverk.
Enkelte ting kan man rett og slett ikke presentere statisk men svært så dynamisk. Som sagt så er det ikke løsningen på alt og noen ganger er god håndtering av cache en like god løsning.
Men ... det er alltids en men. Ta f.eks. dette nettstedet. Dette er en blogg hvor innholdet endrer seg svært sjelden. Listen over innleggene endrer seg når jeg legger til et nytt. Men alle eksisterende innlegg forblir urørt.
Kostnaden ved å ha et tungtdrevet CMS med en rekke databasekall for å vise det samme innholdet gang på gang er stor. Det finnes selvfølgelig muligheter for å mellomlagre det. Men selv det kan være en krevende prosess å få validert og bygd opp på nytt.
Rent sikkerhetsmessig så er denne bloggen lite utsatt for å bli hacket. Jeg sier ikke umulig fordi jeg vet ikke hva folk kan finne på. Men pga at det ikke er noe database og ei heller noe dynamisk innhold så er terskelen for å snuske til nettstedet mitt høy.
Hastigheten er det heller ikke noe å si på. Vi har i mange år jobbet hardt for å holde mengde data så liten som mulig samtidig utvikle mer og mer avanserte systemer som skal fungere på alle mulige skjermer. Enten det er på mobiltelefon med dårlig dekning eller en superrask datamaskin med all verdens hastighet ut mot den store verden. Det som gjør min nettside treg i dag er at jeg krydrer innholdet mitt med bilder, font og noe javascript.
Hastighet er noe vi som utviklere har måttet kjempe med (og til dels mot) i alle år. Spesielt etter at mobiltelefoner og 3G ble den plattformen det var viktig å kunne levere på. De siste årene har søkemotorene begynt å vektlegge hastighet som en del av sine kriterier for at man skal kunne komme høyt opp på trefflisten.
Ytelsen til en statisk HTML-fil er nesten uovervinnelig. Da sitter man egentlig igjen med lasting av javascript, bilder, video osv. som kan hemme hastigheten. Og evt. slike bakenforliggende ting som hastigheten til serveren, geografisk posisjon osv. Men det er ting som hemmer dynamiske nettstedene mer enn de statiske.
Så det man vinner mest på ved statiske sider er hastighet og trygghet.