Was ist Caching?

Im Kontext von Software-Optimierungen und Skalierbarkeit fällt das Wort “Cache” und “Caching” häufiger.

Caching (engl. “Zwischenspeicherung”) beschreibt in der Informationstechnik das Zwischenspeichern rechenaufwendiger oder zeitintensiver Medien, Informationen und Auswertungen, auf einem Medium oder in einer Form, welches schneller oder effizienter als der Ursprungs ist.

Ergänzung zum Thema (Audio)

Vorteile

Die Vorteile von gut umgesetztem Caching sind vielfältig und hängen stark von der Ebene, auf der sie implementiert werden ab.

Beispiel: Caching von Datenbankabfragen

Eine Datenbank bildet fast ausnahmslos das Rückgrat einer jeden Software-Lösung. Was Datenbanken genau sind, haben wir bereits in “Wofür werden Datenbanken eingesetzt?" aufgeschlüsselt.

Stellen Sie sich nun einen E-Commerce-Store vor, der zu jedem Artikel 10 Bewertungen und die aggregierte Durchschnittsbewertung anzeigt. Statt bei jedem einzelnen Produktseitenaufruf jede einzelne Bewertung des jeweiligen Produkts erneut zu analysieren, wird das Ergebnis einmalig zwischengespeichert.

Wenn jetzt ein weiteres Mal dieselbe Produktseite aufgerufen wird, kommt die Durchschnittsbewertung diesmal aus dem Cache. Das entlastet die Datenbank, somit Kosten und Zeit und vermeidet sogenannte Datenbank-Hotspots. Kommt nun eine neue Bewertung hinzu, oder eine vergangene editiert, wird der Cache invalidiert. Heißt nichts anderes, als dass das zwischengespeicherte Ergebnis gelöscht wird, sodass die Werte beim nächsten Aufruf nicht falsch angezeigt, sondern einmalig neu berechnet werden.

Beispiel: Caching von Medien via CDN

Diese beispielhafte E-Commerce-Software nutzt nun zusätzlich zum Datenbankcaching noch ein Pull-CDN. Was ein CDN genau ist, haben wir bereits in “Was ist ein CDN?" aufgeschlüsselt.

Bedeutet in diesem Beispiel, dass Medien, wie Produktbilder, zwar noch immer primär auf der Festplatte des jeweiligen Webserver der Webseite gespeichert sind, aber von einem CDN ausgeliefert werden.

Wenn jetzt also ein beliebiger Nutzer ein spezifisches Bild aufrufen möchte, schaut das CDN, ob es dieses Bild schon kennt und zuvor schon zwischengespeichert hat. Sollte dem so sein, wird die Anfrage direkt vom Zwischenspeicher des CDNs beantwortet. Alternativ fragt das CDN bei dem Webserver einmalig nach und speichert das Bild dann für alle weiteren Anfragen und Nutzer zwischen. Das entlastet den Webserver von besonders bandbreitenintensiven Medien und stellt sicher, dass die Bilder immer vom nächstgelegenen CDN-Knoten ausgeliefert werden, was zusätzlich einen geografischen Geschwindigkeitsvorteil mit sich bringt. Vergleichbar mit dem Verschicken eines Pakets vom nächstgelegenen Paketzentrum, statt irgendeinem weiter entfernten.

Nachteile

Caching macht eine Software zwangsläufig komplexer. Komplexere Software birgt im Vergleich zu minimalistischer Software rein statistisch eine höhere Chance auf mehr (sicherheitskritische) Bugs. Bugs in der Cache-Implementierung sind ähnlich fatal wie Fehler in der Datenbank.

Die Bedeutsamkeit weniger komplexer Software in der IT-Sicherheit haben wir vergangen am Beispiel von WireGuard in “WireGuard als VPN für Ihre Infrastruktur” erläutert.