Cache betydning

Ordet cache betyder et skjul eller mellemlager: et sted hvor noget gemmes midlertidigt for at kunne hentes hurtigere senere

I IT er en cache et hurtigt lager mellem en langsom kilde og en bruger eller processor; uden for IT kan det være et skjult depot af forsyninger eller genstande (fx i geocaching).


Betydning

1) IT (mellemlager): En cache er et hurtigt, midlertidigt lager, som gemmer nyligt eller ofte brugte data for at reducere adgangstid, belastning og omkostninger. Eksempler er CPU’ens L1/L2/L3-cache, operativsystemets sidecache, browsercache og indholdsdistributionsnetværk (CDN)-cacher.

2) Fysisk skjul/depot: Et hemmeligt eller diskret lagersted for ting, proviant, udstyr eller værdigenstande. I friluftsliv og spil som geocaching er en “cache” en beholder, man finder via GPS-koordinater.


Udtale og stavning

  • Udtales omtrent som “kæsj” [kæʃ].
  • Forveksles ofte med “cash” (penge) og “cachet” (udtales [kæʃeɪ]; betyder særpræg/finhed). De er ikke det samme.
  • Bøjning: “en cache”, “flere cacher” (særligt om geocaching) eller “cachelagre” i teknisk dansk.
  • Verbum: “at cache” (at gemme i cache); “caching” er processen.

Etymologi

Kommer fra fransk cache af cacher “at skjule”. I engelsk og dansk blev ordet først brugt om skjulte depoter. I datalogi blev termen adopteret i 1960’erne-70’erne, da hurtige mellemlagre i computere blev udbredt.


Tekniske aspekter (IT)

Formål: At udnytte lokalitet i adgangsmønstre-temporal (det samme tilgås igen snart) og spatial (nabo-data tilgås)-for at mindske latenstid og belastning.

Grundbegreber:

  • Cache-hit: Data findes i cachen (hurtigt svar).
  • Cache-miss: Data mangler, hentes fra langsommere kilde.
  • Miss-typer: kold/compulsory, kapacitets-, konfliktmiss.
  • TTL (time to live), validering (ETag, Last-Modified), invalidering (aktiv sletning/udløb).

Typer af cache:

Type Placering Formål Eksempler
CPU-cache (L1/L2/L3) På/ved CPU Minimere adgang til RAM Instruktions/data-cache, inkl. write-back
TLB CPU Cache af side-tabeller (adresseoversættelse) Translation Lookaside Buffer
OS sidecache RAM Genbruge nyligt læste/skrevne diskblokke Page cache, diskcache
Applikationscache RAM/Redis Hurtig adgang til beregninger/forespørgsler Memoisering, objekter, query-resultater
Databasecache DB-motor Buffer pools for sider/indekser PostgreSQL shared buffers, MySQL InnoDB buffer pool
Browsercache Klient Gemmer filer for hurtigere visning HTML, CSS, JS, billeder
Proxy/CDN-cache Netværk/edge Aflaste origin og sænke latenstid Akamai, Cloudflare, Varnish
DNS-cache Klient/resolver Gemmer domæneopslag Systemresolver, ISP DNS

Udskiftningspolitikker (hvad smides ud ved plads-mangel): LRU (Least Recently Used), LFU (Least Frequently Used), FIFO, ARC, TinyLFU m.fl.

Skrivepolitikker: Write-through (skriv både til cache og origin), write-back/behind (skriv til cache nu, til origin senere), read-through (cachen henter automatisk ved miss), cache-aside (applikationen styrer læs/skriv og invalidering).

Koherens og konsistens: I multiprocessorsystemer sikrer protokoller (fx MESI) at CPU-cacher ser de samme data. I distribuerede caches bruges invalideringsbus, pub/sub eller versionsnøgler.

HTTP-caching: Styres af overskrifter som Cache-Control (max-age, public/private, no-store, stale-while-revalidate), ETag/If-None-Match, Last-Modified/If-Modified-Since, Vary. Edge-cacher kan bruge surrogate keys til selektiv purge.


Eksempler på brug

  • “Tøm din browsercache, hvis siden ser mærkelig ud efter en opdatering.”
  • “Vi lagde en Redis-cache foran databasen for at sænke svartiden.”
  • “CPU’en oplever flere cache-miss under denne tilfældige adgangsbelastning.”
  • “CDN’et leverer billedet fra edge-cachen tæt på brugeren.”
  • “Geocacheren fandt en lille cache under bænken i parken.”
  • “DNS-cachen gjorde, at domæneskiftet først virkede efter TTL udløb.”
  • “Vi invaliderer cache ved deploy via versionsstier (cache-busting).”

HTTP-eksempel (for statiske assets):

HTTP/1.1 200 OK

Cache-Control: public, max-age=31536000, immutable

ETag: "app.v1234.css"

Valideret cache (for HTML):

Cache-Control: public, max-age=60, stale-while-revalidate=30

ETag: "home-9f2a"

Vary: Accept-Encoding

Applikationskode (cache-aside, pseudokode):

val = cache.get(key)

if val == null:

val = db.query(sql)

cache.set(key, val, ttl=300)

return val

Ryd cache (eksempler):

  • Browser: Indstillinger → Ryd browserdata → “Cachelagrede billeder og filer”.
  • Windows DNS: ipconfig /flushdns
  • Linux (root, forsigtighed): sync; echo 3 > /proc/sys/vm/drop_caches

Relaterede termer og skelnen

  • Buffer: Midlertidigt lager for at udjævne forskelle i hastighed/flow. En buffer behøver ikke genbrug; en cache sigter mod genbrug.
  • Queue/kø: Ordnet venteliste af opgaver/data, ikke nødvendigvis til hurtigere opslag.
  • Proxy: Mellemled der videresender trafik; kan inkludere caching (reverse proxy) men er bredere.
  • CDN: Globalt distribueret cachelag for statisk/dynamisk indhold.
  • Memoisering: Applikationsnær caching af funktionsresultater baseret på inputparametre.
  • Indeks: Datastruktur for hurtig søgning; ikke det samme som cache men kan komplementere.

Synonymer og nærstående ord

  • IT: mellemlager, hurtiglager, cachelager.
  • Fysisk: skjul, depot, forråd, gemmested.
  • Relateret men ikke identisk: buffer, proxy, lager (storage), mellemserver.

Antonymer og modbegreber

  • Origin (oprindelig kilde): server, database, langsommere lager.
  • Cache-miss som modstykke til cache-hit.
  • Kold start (ingen opvarmet cache) som modstykke til varm cache.
  • No-store/no-cache politikker som modstykke til aggressiv caching.

Historisk udvikling

Begrebet cache i computere opstod med behovet for at brobygge mellem hurtigere processorer og langsommere hukommelse/lagring. Tidlige mainframes anvendte hurtige buffere; siden blev dedikerede cachehierarkier standard i CPU’er. Med internettets vækst kom browser- og proxycaching, og senere globale CDN’er. I dag anvendes caching i næsten alle lag af stakken-fra hardware over operativsystem og databaser til applikations- og netværksniveau.


Fordele og ulemper

  • Fordele: Lavere latenstid, færre omkostninger, højere kapacitet, robusthed ved midlertidige udfald.
  • Ulemper: Risiko for forældet/stale data, kompleks invalidering (“cache-invalidering er svært”), hukommelsesforbrug, koherensproblemer.
  • Faldgruber: Cache-stampede/dogpile, avalanche (masse-udløb samtidig), cache poisoning, overcaching af private data.
  • Afbødning: Jitterede TTL’er, stale-while-revalidate, request-coalescing, låsning/leasemekanismer, versionerede nøgler, negative caching, rate limiting.

Sikkerhed og privatliv

  • Web: Konfigurer Cache-Control: private for bruger-specifikt indhold; undgå at cache følsomme data; beskyt mod web cache deception/poisoning.
  • DNS: DNS-cacheforgiftning kan omdirigere trafik; brug DNSSEC hvor muligt.
  • CPU: Side-channel-angreb (fx Spectre/Meltdown) kan udnytte cache-timing; afbødes med mikrocode/OS-patches og barriere-instruktioner.
  • Privatliv: Ryd browsercache på delte enheder for at fjerne spor og frigøre plads.

Typiske nøgletal

  • Hit rate og miss rate (%).
  • Latenstid (p50/p95/p99) med og uden cache.
  • Eviction rate og reklameringspolitik (LRU/LFU osv.).
  • TTL-fordeling og andel stale-serve.
  • Origin offload (hvor meget last cachen absorberer).

Fejlfinding og bedste praksis

  • Designér nøgler entydigt (inkludér relevante variabler; brug Vary for HTTP).
  • Vælg passende TTL; bland korte TTL’er for dynamik og lange for statik.
  • Invalider målrettet (surrogate keys, prefix purge) fremfor totale flushes.
  • Mål og overvåg hit rate, latenstid og fejl efter ændringer.
  • Gør writes idempotente og håndtér race conditions ved opvarmning.
  • Overvej datasensitivitet: no-store for følsomme svar.

Andre anvendelser uden for IT

  • Arkæologi og historie: “en cache af sølvmønter” (et nedgravet depot).
  • Militær/friluftsliv: skjulte forsyningsdepoter.
  • Geocaching: små beholdere med logbog og byttegenstande, der findes via koordinater.

Se også

  • CDN (Content Delivery Network)
  • Proxy og reverse proxy
  • Buffer vs. cache
  • Memoisering
  • DNS og DNSSEC
  • CPU-cache og TLB
  • HTTP: Cache-Control, ETag, Vary
  • Geocaching