Hva er "caching"?

av Stian Karlsen

Bilde av forfatter

Den enkleste forklaringen på caching vi har hørt, fant sted på en forelesning og lyder som følger.

Foredragsholder: Hva er 3485250 delt på 23235?

Ingen i publikum hadde svaret, men mange fant frem kalkulatoren sin og plottet inn regnestykket. Til slutt ropte en av deltakerne "150!"

Foredragsholderen gjentok så spørsmåletHva er 3485250 delt på 23235?

Alle ropte (umiddelbart): 150! 

Dette representerer caching på en god måte. Når én bruker besøker en nettside, kan man se på det som at brukeren spør nettsiden om å levere informasjon. For å levere informasjon må nettsiden videresende spørsmålet til serveren, hvorpå serveren må lete frem svaret ("bruke kalkulatoren"), og sende dette tilbake til nettsiden, som deretter presenterer det til brukeren. Hvis spørsmålet er komplisert, tar dette tid, og brukeren må vente lenge på svaret.

Ved å cache (lagre) svaret på en måte som gjør at serveren ikke må "bruke kalkulatoren" hver eneste gang en bruker ber om svaret, kan svaret gis til brukeren nesten umiddelbart.

Den avanserte oppgaven med å finne frem til svaret gjøres med andre ord kun én gang, og etter det, hver gang brukeren stiller spørsmålet, leveres svaret mye fortere.

Hva skjer når svaret forandres?

La oss si at spørsmålet brukeren stiller er "finn alle produkter i kategorien 'bukser' og vis meg hva de koster". Første gang spørsmålet stilles trenger nettsiden litt tid på å levere svaret, men andre, tredje, fjerde osv gang, leveres svaret mye kjappere.

Men hva skjer hvis eksempelvis navnet eller prisen på en eller flere av buksene endres? Hvis nettsiden fortsetter å levere det samme svaret som før, blir svaret plutselig feil.

Løsningen ligger i å bryte cachen hver gang svaret endres. Med andre ord; hvis du endrer prisen på en bukse fra 499 kr til 599 kr, slettes cachen automatisk, og når brukeren stiller spørsmålet "finn alle produkter i kategorien 'bukser' og vis meg hva de koster" må serveren "bruke kalkulatoren" igjen før svaret kan leveres. Men når det er levert, caches det igjen, og leveres kjapt igjen neste gang spørsmålet stilles.