Manche Ergebnisse sind teuer. Eine Auswertung über zwei Jahre Bestelldaten, eine Preisliste, die aus mehreren Quellen zusammenkommt, eine Berechtigungsprüfung mit vielen Verzweigungen. Wenn sich das Ergebnis selten ändert, ist es Verschwendung, es bei jedem Aufruf neu zu erzeugen.
Ein Cache hebt es auf. Beim nächsten Mal wird nicht gerechnet, sondern nachgesehen. Laravel bietet dafür eine einheitliche Schnittstelle, egal ob der Zwischenspeicher im Dateisystem liegt, in der Datenbank oder in Redis. Für alles, was schnell sein soll, ist Redis der übliche Unterbau.
Die schwierige Frage ist die zweite
Etwas aufzuheben ist einfach. Zu wissen, wann es nicht mehr gilt, ist die eigentliche Arbeit. Ein Preis ändert sich, ein Kunde bekommt eine andere Konditionsgruppe, ein Artikel wird deaktiviert. Jedes Mal muss der Zwischenspeicher davon erfahren.
Deshalb setzen wir Caching gezielt ein und nicht flächendeckend. Erst messen, wo die Zeit wirklich verlorengeht, dann genau dort aufheben, und für jede Stelle festlegen, wodurch der Eintrag ungültig wird. Ein Cache, den niemand ungültig macht, ist eine Fehlerquelle mit Verzögerung.