Gatsby JS är ett populärt framework för React som skapar statiska sidor (men fortsätt läs för det är inte helt sant). Några av de fördelar som gör Gatsby så populärt är att det resulterar i väldigt snabba webbsidor och att det finns ett stort community som skapat "plugins" till Gatsby. Men låt oss först titta på vad som menas med att Gatsby är en static site generator.
När man pratar om statiska sidor i kontexten "static sites" menar man innehållet inte är dynamiskt som i att det genereras från ett API eller en databas utan att det kan lagras som filer på din webbserver. Det Gatsby gör är att den bygger din webbsida en gång vilket resulterar i en massa filer som du kan skicka till dina besökare. Om vi jämfört det med tex Wordpress där varje sidvisning resulterar i att wordpress hämtar sidinnehållet från databasen (vi bortser från möjligheterna att använda en cache). Nackdelen med en statisk sida är att innehållet inte uppdateras omedelbart. Om du förändrar innehållet på sidan kan det ta flera minuter innan Gatsby byggt klart sidan igen så att du kan se det nya innehållet. Fördelarna är dock att sidan blir betydligt snabbare eftersom du inte behöver vänta på någon databas. Sidan kan också hantera fler besökare eftersom det är mindre resurskrävande att bara skicka statiskt innehåll (och använder du dig av en CDN som tex Netlify har du i praktiken möjlighet att ta emot obegränsat många besökare samtidigt). Eftersom innehållet bara är statiskt kan du också använda dig av en CDN som har servrar runtom på jorden vilket gör att det går lika snabbt att ladda din sida i Japan som i Stockholm.
Men det som gör Gatsby och andra liknande frameworks riktigt intressanta är att du även kan ha dynamiskt innehåll som uppdateras hos klienten. Tänk dig att du har en artikel som handlar om att investera i aktier. Du kan då ha nästan hela sidan statisk eftersom det mest är text och bilder men sen kan du hämta den senaste börskursen till aktien. Du kan alltså hämta in ny data efter att sidan har laddats.
Om Gatsby nu är så fantastiskt när bör man inte välja Gatsby? Gatsby är ett utmärkt val för små och medelstora sidor där du generar innehållet och det inte uppdateras allför ofta. Om vi börjar med storleken skulle jag säga att om du räknar med att ha över 10 000 sidor så kommer Gatsby inte vara ett bra val. Dels kommer det en punkt där Gatsby inte kan generera fler sidor (exakt var beror på vilken typ av innehåll osv) och dels blir byggprocessen väldigt långsam. Så om du har en riktigt stor sajt bör du titta på tex NextJS som har möjlighet att exportera statiska sidor som Gatsby men även ha en server med dynamiskt innehåll. Det gäller också om du har användargenererat innehåll där användarna förväntar sig att sidan ska uppdateras direkt. Om du tex har ett forum fungerar det inte att användarna ska vänta 15 min innan deras kommentar syns på sidan. Det blir en dålig användarupplevelse helt enkelt.