Muster zur Cache-Invalidierung
Wenden Sie Strategien wie Cache-Aside, Write-Through und TTL-basierte Invalidierung an.
Muster zur Cache-Invalidierung ist eine kostenlose PHP Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des PHP Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.
Das schwierige Problem
„In der Informatik gibt es nur zwei schwierige Dinge: Cache-Invalidierung und das Benennen von Dingen.“ – Phil Karlton. Zu wissen, wann und wie zwischengespeicherte Daten invalidiert werden müssen, ist entscheidend.
Ablauf anhand der TTL (passiv)
Die einfachste Strategie: Legen Sie eine TTL fest und akzeptieren Sie, dass der Cache bis zu diesem Zeitraum veraltete Daten liefern kann. Das funktioniert, wenn eine geringfügige Verzögerung bei der Aktualität akzeptabel ist.
<?php
Cache::put("user:1", $user, 300); // expires in 5 minutes automaticallyWrite-Through-Invalidierung
Löschen oder aktualisieren Sie beim Ändern von Daten sofort den zugehörigen Cache-Schlüssel.
<?php
function updateUser(int $id, array $data): void {
User::find($id)->update($data);
Cache::forget("user:$id"); // delete cache
// Or re-warm:
Cache::put("user:$id", User::find($id), 300);
}Cache-Tagging
Versehen Sie zusammengehörige Cache-Einträge mit Tags, damit Sie eine ganze Gruppe auf einmal invalidieren können – zum Beispiel alle Cache-Einträge eines bestimmten Benutzers.
<?php
// Store with tags:
Cache::tags(["user:1", "posts"])->put("user:1:recent-posts", $posts, 600);
// Invalidate all "user:1" entries:
Cache::tags("user:1")->flush();Ereignisgesteuerte Invalidierung
Verwenden Sie in Laravel Eloquent-Modellereignisse, um den Cache automatisch zu invalidieren, wenn ein Modell gespeichert oder gelöscht wird.
<?php
class User extends Model {
protected static function booted(): void {
static::saved(fn($u) => Cache::forget("user:{$u->id}"));
static::deleted(fn($u) => Cache::forget("user:{$u->id}"));
}
}Cache-Aside mit Versionierung
Fügen Sie Cache-Schlüsseln eine Versionsnummer hinzu. Durch das Erhöhen der Version werden alle vorhandenen Einträge effektiv invalidiert, ohne sie zu löschen.
<?php
$v = Cache::get("user:version", 1);
$key = "user:{$id}:v{$v}";
// To invalidate: increment the version
Cache::increment("user:version");Probabilistisches vorzeitiges Ablaufen (PER)
Um Cache-Stampedes zu verhindern, berechnen Sie den Cache bei einem Teil der Anfragen etwas vor seinem Ablauf neu. Dadurch vermeiden Sie, dass der Cache auf allen Servern gleichzeitig abläuft.
Aktualisierung im Hintergrund
Ein Hintergrundjob füllt häufig gelesene Cache-Einträge auf, bevor sie ablaufen. Der Cache ist niemals leer – Lesezugriffe bleiben immer schnell.
Stale-While-Revalidate
Liefern Sie veraltete Daten sofort aus, während der Cache asynchron im Hintergrund aktualisiert wird. Dadurch entfallen Latenzspitzen bei Cache-Misses.
Verteilte Cache-Invalidierung
In einer Umgebung mit mehreren Servern löscht die Invalidierung eines Cache-Schlüssels auf einem Server nicht automatisch die lokalen Caches der anderen Server. Verwenden Sie Redis Pub/Sub oder einen gemeinsamen Speicher, um Invalidierungen zu übertragen.
Cache-Hierarchie
Schichten Sie Caches: einen lokalen In-Process-Cache (APCu) vor einem verteilten Cache (Redis). Der lokale Cache ist schneller, muss aber bei Datenänderungen über alle Instanzen hinweg invalidiert werden.
Zusammenfassung
Häufige Muster sind: Ablauf per TTL (einfach), Write-Through-Löschen (präzise), Tagging (gruppiert) und ereignisgesteuerte Invalidierung (automatisch). Wählen Sie abhängig davon, wie wichtig Ihnen die Aktualität der Daten im Verhältnis zur Einfachheit ist.
Kurze Überprüfung
Was bewirkt Cache::tags()->flush()?
Häufig gestellte Fragen
Ist die Lektion „Muster zur Cache-Invalidierung“ kostenlos?
Ja — der vollständige Text von „Muster zur Cache-Invalidierung“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des PHP Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Muster zur Cache-Invalidierung“?
Wenden Sie Strategien wie Cache-Aside, Write-Through und TTL-basierte Invalidierung an. Du übst PHP Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um PHP Academy zu starten?
Keine Vorkenntnisse erforderlich. PHP Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Muster zur Cache-Invalidierung“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser PHP Academy-Lektion Code schreiben und ausführen?
Ja. Jede PHP Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Warum Caching in PHP wichtig ist
- Redis als PHP-Cache-Backend
- Memcached für Session- und Objekt-Caching
- Muster zur Cache-Invalidierung