# Cache (tijdelijk geheugen)

Een cache (spreek uit: kesj of kasj, van het Engelse woord 'cache', voorraad of opslagplaats) is een opslagplaats waarin gegevens tijdelijk worden opgeslagen om sneller toegang tot deze data mogelijk te maken. Essentieel van een cache is ook dat het transparant is in die zin dat het bij het ophalen van data niet zichtbaar is of het bij de originele bron wordt opgehaald of uit de cache wordt gehaald, afgezien van de korte toegangstijd.
Het opslaan van gegevens op een sneller medium om sneller toegang tot deze data te hebben wordt caching genoemd. De term cache wordt meestal gebruikt voor zowel de data die gecachet worden als voor de opslagplaats waar deze data gecachet worden.

## Caches in hardware
### Level1-cache

Omdat processors in de regel veel sneller zijn dan de gebruikelijke soorten (goedkope) DRAM, biedt het een voordeel veel gebruikte informatie tijdelijk op te slaan in een veel duurder maar sneller geheugen, SRAM, in de vorm van een ingebouwde cache. Deze wordt Level1-cache genoemd (of: On-chip-cache). Omdat deze cache zich in de processor bevindt, zijn de gegevens direct beschikbaar zonder dat deze eerst via een bus getransporteerd hoeven te worden. Level1-caches zijn relatief klein (meestal tussen de 8 en 256 kB elk) omdat de ruimte op een processor beperkt is. Toch leveren ze een behoorlijke snelheidswinst op.
De eerste desktopprocessor met een ingebouwde level1-cache was de 80486SX-16 van Intel, die een geïntegreerde cache van 8 kB had. Tegenwoordig hebben processors meestal drie level1-caches: een voor instructies, een voor data en een zogenaamde Translation look-aside buffer (TLB) voor het vertalen van virtuele geheugenadressen naar fysieke geheugenadressen.

### Level2-cache

Geheugentoegang is voor een processor relatief langzaam. Niet alleen moet de data via de bus getransporteerd worden, maar het hoofdgeheugen is zelf ook relatief langzaam. Om te zorgen dat de processor zo min mogelijk hoeft te wachten op gegevens uit het hoofdgeheugen ging men naast de level1-cache en pipelines gebruikmaken van een level2-cache.
Oorspronkelijk bevond deze zich op een aparte chip op het moederbord, met een eigen controller. Deze level2-cache bestond uit geheugen dat geen refresh-cycles nodig had en daardoor aanzienlijk sneller (en duurder) was dan gewoon geheugen. Later werd de l2-cache op dezelfde chip als de processor geplaatst en met de processor verbonden door middel van een speciale cache-bus. Tegenwoordig hebben processors meestal een l2-cache van enkele megabytes. Wanneer een computer meerdere kernen heeft, heeft elke kern zijn eigen l2-cache.

### Level3-cache

Vele moderne processoren beschikken over meerdere processorkernen. Om deze kernen (ook wel cores genoemd) efficiënt te laten samenwerken, moet het werk verdeeld worden. Om de kernen met elkaar te laten communiceren beschikken multikernprocessoren over een cache die gedeeld wordt door de processorkernen, ook wel de L3-cache genoemd.

### Disk-cache

Vergeleken met het hoofdgeheugen van een computer zijn externe geheugens zoals een harde schijf erg langzaam. Daarom zorgen de meeste besturingssystemen ervoor dat een kopie van veelgebruikte data in het hoofdgeheugen aanwezig is. Dit wordt de disk-cache (of page-cache) genoemd.
Een klassiek voorbeeld van een disk-cache is SmartDrive: de disk-cache die Microsoft toevoegde aan MS-DOS vanaf versie 4.

## Caches in software

Ook in software kan gebruik worden gemaakt van een cache. Als een programma gegevens nodig heeft uit een relatief langzame bron, kan het zinvol zijn deze gegevens tijdelijk beschikbaar te houden. Dit kan het geval zijn met gegevens die het resultaat zijn van een complexe berekening, die via een netwerk zijn binnengekomen of die uit een database komen.

### Voorbeeld: de browser-cache

Een voorbeeld hiervan is de zogenaamde browser-cache. Wanneer een gebruiker een pagina opvraagt in een webbrowser, wordt er ook een kopie van deze pagina op de harde schijf opgeslagen. Hetzelfde geldt voor afbeeldingen, geluidsfragmenten en andere bestanden die van internet komen. Wanneer de gebruiker dezelfde pagina opnieuw opvraagt wordt deze in het algemeen niet opnieuw via internet opgehaald, maar van de harde schijf.
Omdat het ophalen van gegevens van een lokale schijf een stuk sneller is dan het ophalen via internet, kan dit een snelheidswinst opleveren (met name bij veelbezochte pagina's).

## Caches in netwerken

Ook in netwerken wordt op verschillende lagen en plaatsen het cache-principe toegepast.

### Voorbeeld: proxyservers

Tegenwoordig worden proxyservers vooral gebruikt om privacyredenen, of om de beveiliging en het beheer van een netwerk te vereenvoudigen. Echter, toen netwerken (en servers) nog een stuk langzamer waren, werden proxyservers vaak gebruikt vanwege hun cachemogelijkheden. Als een bedrijf of een school een aantal computers heeft die verbonden zijn met internet via een proxyserver, dan slaat een caching proxyserver een lokale kopie op van elk bestand dat opgevraagd wordt. Als zo'n bestand nogmaals opgevraagd wordt (ook al is het door een andere gebruiker op een andere computer) kan het bestand snel door de proxyserver geleverd worden. Ook internetproviders boden hun gebruikers daarom vaak de mogelijkheid om een proxyserver te gebruiken.