Maxim Mironjuk
-
April 20, 2025
Doctrine bringt zwei grundverschiedene Cache-Mechanismen mit, die auf den ersten Blick beide dasselbe Ziel verfolgen, nämlich weniger Last auf der Datenbank, aber strukturell komplett unterschiedlich arbeiten. Der Query Result Cache merkt sich das fertige Ergebnis einer konkreten Abfrage, während der Second-Level Cache einzelne Entities unabhängig von der Abfrage, die sie ursprünglich geladen hat, vorhält. Wer beide Mechanismen verwechselt, baut entweder eine Caching-Schicht, die bei jeder Schreiboperation veraltete Daten ausliefert, oder eine, die viel zu aufwendig für das eigentliche Problem ist. Dieser Artikel klärt die Unterschiede an konkreten Beispielen und zeigt, wie man Cache-Invalidierung sauber umsetzt.