Hosting & Performance

Cache-Invalidierung

Cache-Invalidierung legt fest, wann ein zwischengespeicherter Inhalt als veraltet gilt und beim nächsten Aufruf neu erzeugt wird.

Sie bildet die schwierigere Hälfte des [[caching|Caching]]: Die Zwischenspeicherung selbst ist schnell eingerichtet, die Frage nach dem richtigen Zeitpunkt des Verwerfens entscheidet über die Verlässlichkeit der Anzeige.

In einfachen Worten

Ein Zwischenspeicher hält eine fertig erzeugte Seite bereit, damit wiederholte Aufrufe ohne Neuberechnung beantwortet werden. Sobald sich die zugrunde liegenden Daten ändern, zeigt dieser Vorrat einen überholten Stand. Cache-Invalidierung beschreibt die Regeln, nach denen er verworfen wird. Drei Wege sind üblich: eine Gültigkeitsdauer, nach deren Ablauf neu erzeugt wird; ein Auslöser, der beim Speichern einer Änderung genau die betroffenen Einträge verwirft; und eine Kennung im Adresspfad, die bei jeder Änderung wechselt. Die eigentliche Schwierigkeit liegt in den Abhängigkeiten: Eine Preisänderung betrifft die Artikelseite, die Übersichten, in denen der Artikel erscheint, und die Suchergebnisse.

Wozu brauche ich das?

Der Bedarf entsteht überall dort, wo zwischengespeicherte Inhalte von Daten abhängen, die sich unabhängig davon ändern. Typisch sind Preise und Verfügbarkeiten, redaktionelle Änderungen an Texten und Übersichten, deren Zusammensetzung von einzelnen Artikeln abhängt.

Beispiel aus der Praxis

Ein Händler ändert in der Warenwirtschaft einen Preis. Die Artikelseite wird kurz darauf neu erzeugt und zeigt den neuen Wert. Die Kategorieseite und die Suchergebnisse stammen jedoch aus einem eigenen Vorrat, für den kein Auslöser hinterlegt wurde. Kunden sehen dort für Stunden den alten Preis und wundern sich über die Abweichung im Warenkorb. Eine Beschreibung der Abhängigkeiten hätte die betroffenen Einträge gemeinsam verworfen.

Wirtschaftlicher Nutzen

Eine durchdachte Invalidierung erlaubt lange Gültigkeitsdauern und damit kurze Ladezeiten, ohne die Aktualität der Angaben aufzugeben. Sie erspart das vollständige Leeren des Zwischenspeichers, das nach jeder Änderung eine Lastspitze erzeugt, und verhindert Rückfragen zu Preisen, die an zwei Stellen unterschiedlich erscheinen.

Typische Fehler

  • Nach jeder Änderung den gesamten Zwischenspeicher geleert – die anschließende Neuberechnung erzeugt eine Lastspitze.
  • Nur die geänderte Seite verworfen – Übersichten und Suchergebnisse, die denselben Artikel enthalten, bleiben veraltet.
  • Die Gültigkeitsdauer als einzigen Mechanismus genutzt – bis zum Ablauf zeigt die Seite einen überholten Stand.
  • Personenbezogene Inhalte zwischengespeichert, ohne den Vorrat je Konto zu trennen – ein Besucher sieht die Angaben eines anderen.
  • Keine Möglichkeit zum gezielten Verwerfen vorgesehen – im Störungsfall bleibt nur das vollständige Leeren.

Worauf achten?

  • Für jede zwischengespeicherte Seite festhalten, von welchen Daten sie abhängt, und daraus die Auslöser ableiten.
  • Inhalte, die sich je Konto unterscheiden, getrennt vorhalten oder von der Zwischenspeicherung ausnehmen.
  • Nach dem Verwerfen die erste Neuberechnung einplanen, damit sie nicht in eine Lastspitze fällt.
  • Einen Weg zum gezielten Verwerfen einzelner Einträge vorsehen und ihn dokumentieren.
  • Nach Änderungen an der Zwischenspeicherung stichprobenartig prüfen, ob Artikelseite, Übersicht und Suche denselben Stand zeigen.

Häufig gestellte Fragen

Wann wird ein Zwischenspeicher verworfen?

Entweder nach Ablauf einer festgelegten Gültigkeitsdauer oder ausgelöst durch eine Änderung an den zugrunde liegenden Daten. Der ausgelöste Weg ist genauer, weil er den neuen Stand sofort sichtbar macht.

Warum reicht es nicht, die geänderte Seite zu verwerfen?

Weil derselbe Artikel auch in Übersichten, Empfehlungen und Suchergebnissen erscheint. Diese Seiten stammen aus eigenen Einträgen und zeigen den alten Stand weiter, solange sie nicht ebenfalls verworfen werden.

Was spricht gegen vollständiges Leeren?

Nach dem Leeren muss jede Seite beim nächsten Aufruf neu erzeugt werden. Bei einem großen Bestand entsteht dadurch eine Lastspitze, die die Antwortzeiten für alle Besucher verschlechtert.