Im Kontext von Software-Optimierungen und Skalierbarkeit fallen die Wörter „Cache“ und „Caching“ häufig.
Caching (engl. „Zwischenspeicherung“) beschreibt in der Informationstechnik das Zwischenspeichern rechenaufwendiger oder zeitintensiver Medien, Informationen und Auswertungen auf einem Medium oder in einer Form, die schneller oder effizienter ist als der Ursprung.
Ergänzung zum Thema (Audio 🎧)
Vorteile
Die Vorteile von gut umgesetztem Caching sind vielfältig und hängen stark von der Ebene ab, auf der es implementiert wird.
Beispiel: Caching von Datenbankabfragen
Eine Datenbank bildet fast ausnahmslos das Rückgrat jeder Softwarelö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 Bewertung des jeweiligen Produkts erneut zu analysieren, wird das Ergebnis einmalig zwischengespeichert.
Wenn nun erneut dieselbe Produktseite aufgerufen wird, kommt die Durchschnittsbewertung aus dem Cache. Das entlastet die Datenbank, spart Kosten und Zeit und vermeidet sogenannte Datenbank-Hotspots. Kommt eine neue Bewertung hinzu oder wird eine bestehende editiert, wird der Cache invalidiert. Das 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 Datenbank-Caching noch ein Pull-CDN. Was ein CDN genau ist, haben wir bereits in “Was ist ein CDN?" erläutert.
In diesem Beispiel bedeutet das, dass Medien wie Produktbilder zwar weiterhin primär auf der Festplatte des jeweiligen Webservers gespeichert sind, jedoch von einem CDN ausgeliefert werden.
Wenn nun ein beliebiger Nutzer ein spezifisches Bild aufrufen möchte, prüft das CDN, ob es dieses Bild schon kennt und zuvor zwischengespeichert hat. Falls ja, wird die Anfrage direkt aus dem Zwischenspeicher des CDNs beantwortet. Andernfalls fragt das CDN einmalig beim Webserver nach und speichert das Bild anschließend 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 von einem weiter entfernten.
Nachteile
Caching macht eine Software zwangsläufig komplexer. Komplexere Software birgt im Vergleich zu minimalistischer Software rein statistisch eine höhere Wahrscheinlichkeit für mehr (sicherheitskritische) Bugs. Fehler in der Cache-Implementierung können ähnlich fatal sein wie Fehler in der Datenbank.
Die Bedeutung weniger komplexer Software in der IT-Sicherheit haben wir bereits am Beispiel von WireGuard in “WireGuard als VPN für Ihre Infrastruktur” erläutert.