Cache

Een cache is snelle tussenopslag voor data die eerder is opgehaald of berekend, zodat de volgende keer het langzame originele pad overgeslagen kan worden. Vrijwel elke laag van een computersysteem heeft er een.

Caches overal

CacheVersnelt
CPU-cache (L1/L2/L3)Toegang tot RAM
Page cache (Linux)Toegang tot de schijf
DNS-cacheNaamopzoekingen
BrowsercacheOpnieuw laden van webpagina's
CDNOphalen bij de oorspronkelijke server

De page cache: "waar is mijn RAM?"

Linux gebruikt vrij geheugen automatisch als cache voor schijfblokken. Daarom lijkt het RAM altijd "vol" — dat is gezond gedrag:

free -h         # kolom buff/cache is direct beschikbaar voor programma's

Heeft een programma geheugen nodig, dan geeft de kernel cache meteen vrij.

Verval en invalidatie

Een cache kan verouderde data bevatten. Daarom krijgt cache-inhoud een levensduur (TTL, zoals bij DNS-records) of wordt hij actief ongeldig gemaakt bij wijzigingen. Dat laatste goed doen is berucht lastig — vandaar de klassieker: "There are only two hard things in computer science: cache invalidation and naming things." Als iets onverklaarbaar oud gedrag vertoont, is een verouderde cache een van de eerste verdachten.

Zie ook

  • cdn — caching op internetschaal
  • dns — caching met TTL's op elke tussenstap
  • latency — wat een cache verlaagt
  • free — de page cache in beeld
ictlinux