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 OKCache-Control: public, max-age=31536000, immutable
ETag: "app.v1234.css"
Valideret cache (for HTML):
Cache-Control: public, max-age=60, stale-while-revalidate=30ETag: "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: privatefor 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
Varyfor 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-storefor 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
Indholdsfortegnelse
- Betydning
- Udtale og stavning
- Etymologi
- Tekniske aspekter (IT)
- Eksempler på brug
- Relaterede termer og skelnen
- Synonymer og nærstående ord
- Antonymer og modbegreber
- Historisk udvikling
- Fordele og ulemper
- Sikkerhed og privatliv
- Typiske nøgletal
- Fejlfinding og bedste praksis
- Andre anvendelser uden for IT
- Se også