Zuletzt aktualisiert am 05.12.2025 7 Minuten Lesezeit

Cache

Ein Cache (ausgesprochen [kasch] oder [kaesh]) ist ein schneller Zwischenspeicher, der häufig benötigte Daten temporär speichert, um den Zugriff auf langsamere Speichermedien oder aufwendige Berechnungen zu reduzieren. Das Wort stammt vom französischen cacher (verstecken) ab, da die zwischengespeicherten Daten für den Anwender unsichtbar verwaltet werden.

Das Grundprinzip des Caching basiert auf der Lokalität von Speicherzugriffen: Programme greifen häufig auf dieselben Daten wiederholt zu (zeitliche Lokalität) und auf Daten, die räumlich nah beieinander liegen (räumliche Lokalität). Ein Cache nutzt diese Eigenschaften aus, indem er oft benötigte Daten in einem schnelleren Speicher bereithält.

Funktionsweise eines Cache

Die Funktionsweise eines Cache lässt sich in drei grundlegende Schritte unterteilen. Beim Speichern legt das System häufig benötigte Daten im Cache ab, um spätere Zugriffe zu beschleunigen. Beim Abruf prüft das System zuerst, ob die angeforderten Daten im Cache vorhanden sind. Beim Aktualisieren werden veraltete Daten im Cache entweder erneuert oder entfernt.

Wenn die angeforderten Daten im Cache gefunden werden, spricht man von einem Cache-Hit. Der Zugriff erfolgt dann sehr schnell. Sind die Daten nicht vorhanden, liegt ein Cache-Miss vor, und das System muss auf den langsameren Ursprungsspeicher zugreifen. Die Hit-Rate (Trefferquote) ist ein wichtiger Leistungsindikator: Je höher sie ist, desto effektiver arbeitet der Cache.

Cache-Typen und Einsatzgebiete

Caches kommen in vielen Bereichen der IT zum Einsatz. Je nach Anwendungsfall unterscheiden sie sich in Größe, Geschwindigkeit und Verwaltung. Die wichtigsten Cache-Typen solltest du als Fachinformatiker für Systemintegration oder Anwendungsentwickler kennen.

CPU-Cache (L1, L2, L3)

Der CPU-Cache ist direkt im Prozessor integriert und besteht aus mehreren Ebenen (Levels). Je näher der Cache am Prozessorkern liegt, desto schneller und kleiner ist er. Diese Hierarchie ermöglicht einen optimalen Kompromiss zwischen Geschwindigkeit und Speichergröße.

  • L1-Cache: Der schnellste Cache mit typischerweise 32-64 KB pro Kern. Zugriffe dauern nur 1-4 CPU-Takte. Er ist unterteilt in Instruction-Cache und Data-Cache.\n- L2-Cache: Größer (256 KB - 1 MB pro Kern), aber etwas langsamer. Zugriffe benötigen etwa 10-20 Takte.\n- L3-Cache: Der größte CPU-Cache (2-32 MB), wird von allen Kernen gemeinsam genutzt. Zugriffe dauern 40-75 Takte.

Zum Vergleich: Ein Zugriff auf den Arbeitsspeicher (RAM) benötigt über 100 Takte. Der Geschwindigkeitsunterschied macht deutlich, warum CPU-Caches so wichtig für die Systemleistung sind.

Browser-Cache

Webbrowser speichern Webseiten-Ressourcen wie Bilder, CSS-Dateien und JavaScript-Skripte lokal auf deinem Computer. Wenn du eine Webseite erneut besuchst, muss der Browser diese Dateien nicht erneut vom Server herunterladen. Das beschleunigt das Laden der Seite erheblich und reduziert den Netzwerkverkehr.

Die Steuerung des Browser-Caching erfolgt über HTTP-Header wie Cache-Control, Expires und ETag. Als Webentwickler kannst du damit festlegen, wie lange Ressourcen gecacht werden sollen. Die technischen Details sind in RFC 9111 (HTTP Caching) definiert.

Festplatten-Cache

Festplatten und SSDs verfügen über eigene interne Caches (typischerweise 32-256 MB), um Lese- und Schreibvorgänge zu beschleunigen. Der Cache speichert häufig gelesene Sektoren und puffert Schreiboperationen, bevor diese auf das Speichermedium geschrieben werden.

Datenbank-Cache

Datenbanksysteme verwenden verschiedene Caching-Strategien: Buffer Pools speichern häufig gelesene Datenseiten, Query Result Caches merken sich Ergebnisse wiederholter Abfragen, und Page Caches beschleunigen den Zugriff auf Indexe. Externe Cache-Systeme wie Redis werden häufig vor Datenbanken geschaltet, um die Last zu reduzieren.

CDN-Cache

Content Delivery Networks (CDNs) speichern Inhalte auf weltweit verteilten Servern. Wenn ein Nutzer eine Webseite aufruft, werden die Daten vom nächstgelegenen CDN-Server ausgeliefert. Das reduziert die Latenz erheblich und entlastet den Ursprungsserver. Mehr dazu findest du in der AWS-Dokumentation zu Caching.

Cache-Strategien

Bei der Implementierung eines Caches muss festgelegt werden, wie Schreiboperationen behandelt werden. Die beiden wichtigsten Strategien sind Write-Through und Write-Back.

Write-Through

Bei Write-Through werden Daten gleichzeitig in den Cache und in den Hauptspeicher geschrieben. Diese Strategie garantiert, dass Cache und Hauptspeicher immer konsistent sind. Der Nachteil: Schreibvorgänge sind langsamer, da auf die langsamere Speicherschicht gewartet werden muss.

Write-Back

Bei Write-Back (auch Write-Behind genannt) werden Daten zunächst nur in den Cache geschrieben. Der Schreibvorgang gilt sofort als abgeschlossen. Die Daten werden später asynchron in den Hauptspeicher übertragen. Diese Methode ist schneller, birgt aber Risiken: Bei einem Systemabsturz können nicht gesicherte Daten verloren gehen.

Cache-Invalidierung

Cache-Invalidierung bezeichnet den Prozess, bei dem veraltete Einträge aus dem Cache entfernt werden. Dies ist eine der schwierigsten Herausforderungen beim Caching, denn es muss sichergestellt werden, dass keine veralteten Daten ausgeliefert werden. Gängige Ansätze sind TTL (Time-To-Live), bei dem Einträge nach einer festgelegten Zeit ablaufen, oder ereignisbasierte Invalidierung, bei der Änderungen an den Quelldaten das Löschen der Cache-Einträge auslösen.

Cache-Ersetzungsalgorithmen

Wenn der Cache voll ist und neue Daten gespeichert werden sollen, muss entschieden werden, welcher bestehende Eintrag entfernt wird. Dafür gibt es verschiedene Algorithmen.

LRU (Least Recently Used)

LRU entfernt den Eintrag, der am längsten nicht verwendet wurde. Die Idee dahinter: Wenn ein Eintrag lange nicht genutzt wurde, wird er wahrscheinlich auch in Zukunft nicht benötigt. LRU ist einer der am häufigsten eingesetzten Algorithmen in modernen Systemen.

FIFO (First In, First Out)

FIFO entfernt den ältesten Eintrag, unabhängig davon, wie oft er verwendet wurde. Dieser Algorithmus ist einfacher zu implementieren als LRU, kann aber weniger optimal sein, da häufig genutzte Einträge möglicherweise zu früh entfernt werden.

LFU (Least Frequently Used)

LFU entfernt den Eintrag, der am seltensten verwendet wurde. Dabei wird gezählt, wie oft auf jeden Eintrag zugegriffen wurde. Der Nachteil: Einträge, die früher oft genutzt wurden, bleiben lange im Cache, auch wenn sie nicht mehr benötigt werden.

Vor- und Nachteile von Caching

Caching bietet erhebliche Vorteile, bringt aber auch Herausforderungen mit sich, die du bei der Implementierung berücksichtigen solltest.

Vorteile

  • Reduzierte Latenz: Zugriffe auf gecachte Daten sind deutlich schneller als Zugriffe auf den Ursprungsspeicher.\n- Verbesserte Performance: Eine hohe Hit-Rate führt zu spürbarer Leistungssteigerung.\n- Weniger I/O-Operationen: Die Last auf Festplatten, Datenbanken oder Netzwerke wird reduziert.\n- Bessere Skalierbarkeit: Systeme können mit höherem Traffic umgehen, da wiederholte Anfragen aus dem Cache bedient werden.

Nachteile

  • Konsistenzprobleme: Wenn Daten in mehreren Caches oder zwischen Cache und Hauptspeicher dupliziert sind, können Inkonsistenzen entstehen.\n- Erhöhte Komplexität: Die Verwaltung und Invalidierung von Caches erfordert zusätzliche Logik.\n- Speicherverbrauch: Caches belegen Speicher, der für andere Zwecke nicht verfügbar ist.\n- Cache-Invalidierung ist schwierig: Es ist eine Herausforderung sicherzustellen, dass veraltete Daten nicht ausgeliefert werden.

Praktisches Beispiel: HTTP-Caching konfigurieren

Als Webentwickler kannst du das Caching-Verhalten von Browsern über HTTP-Header steuern. Hier ein Beispiel für eine Webserver-Konfiguration mit nginx:

location ~* \.(css|js|png|jpg|gif|ico)$ {
    expires 30d;
    add_header Cache-Control "public, no-transform";
}

Diese Konfiguration weist Browser an, statische Dateien wie CSS, JavaScript und Bilder für 30 Tage zu cachen. Das reduziert die Serverlast und beschleunigt das Laden für wiederkehrende Besucher erheblich.

Cache in der IT-Praxis

In der täglichen Arbeit als IT-Fachkraft wirst du regelmäßig mit verschiedenen Cache-Systemen zu tun haben. Systemadministratoren überwachen CPU- und Festplatten-Caches, konfigurieren Webserver-Caching und setzen externe Cache-Lösungen wie Redis oder Memcached ein. Softwareentwickler implementieren Caching auf Anwendungsebene und müssen Cache-Invalidierung korrekt handhaben.

Das Verständnis von Caching-Konzepten hilft dir, Performance-Probleme zu diagnostizieren und Systeme effizienter zu gestalten. Wenn eine Anwendung langsam reagiert, kann eine Analyse der Cache-Hit-Rate oft wertvolle Hinweise liefern.

Quellen und weiterführende Links