Cache in Symfony

Wissen Wie Symfony weiß, dass der Cache neu aufgebaut werden muss

images/logo.png Igor Ilin – 04.09.2024

Symfony baut den Cache automatisch neu auf, wenn es Änderungen im Code oder in den Konfigurationsdateien der Anwendung feststellt. Dieser Mechanismus ist entscheidend für Entwicklungsumgebungen, in denen Entwickler häufig Code und Konfigurationen aktualisieren. Hier erfahren Sie, wie Symfony weiß, wann der Cache neu aufgebaut werden muss:

1. Cache Warmers und Cache Clearers

  • Symfony verwendet Cache-Warmers und Cache-Clearers zur Verwaltung des Cache.
  • Cache-Warmers sind Dienste, die nach dem Löschen des Caches ausgeführt werden, um den Cache mit den notwendigen Daten zu füllen (wie kompilierte Container-Dateien, Routing, Anmerkungen usw.).
  • Cache-Clearer leeren bei Bedarf bestimmte Teile des Cache.

2. File Timestamps und Metadata

  • Symfony verfolgt die Zeitstempel von Dateien, die den Cache beeinflussen (z.B. Konfigurationsdateien, Routingdateien, etc.).
  • Wenn eine Anfrage gestellt wird, vergleicht Symfony den aktuellen Zeitstempel dieser Dateien mit dem im Cache gespeicherten.
  • Wenn sich der Zeitstempel einer Datei geändert hat (was bedeutet, dass die Datei modifiziert wurde), löst Symfony einen Neuaufbau des Caches aus, um sicherzustellen, dass die Änderungen berücksichtigt werden.

3. Entwicklungsmodus

  • Im Entwicklungsmodus (d.h. wenn APP_ENV auf dev gesetzt ist), ist Symfony aggressiver bei der Überprüfung auf Änderungen.
  • Es überprüft die Zeitstempel aller relevanten Dateien bei jeder Anfrage, um Änderungen zu erkennen.
  • Dadurch wird sichergestellt, dass die Entwickler die Änderungen sofort sehen, ohne den Cache manuell zu löschen.

4. Produktionsmodus

  • Im Produktionsmodus (APP_ENV auf prod gesetzt) prüft Symfony aus Performance-Gründen nicht bei jeder Anfrage die Zeitstempel der Dateien.
  • Stattdessen wird der Cache manuell geleert und neu aufgebaut, wenn Änderungen implementiert werden. Dies wird typischerweise mit Befehlen wie bin/console cache:clear oder bin/console cache:warmup durchgeführt.

5. Konfigurationsänderungen

  • Symfony überwacht die Konfigurationsdateien (YAML, XML oder PHP) im Verzeichnis config/ und baut den Cache neu auf, wenn sich diese Dateien ändern.
  • Dazu gehören Service-Definitionen, Routing, Sicherheitskonfigurationen, etc.

6. Klassenkompilierung

  • Symfony baut den Cache auch neu auf, wenn es Änderungen in PHP-Klassendateien feststellt, die dem automatischen Laden unterliegen.
  • Zum Beispiel können Änderungen in Controller-Klassen, Entitäten oder Service-Klassen einen Neuaufbau des Caches auslösen.

Beispiel: Symfony’s Cache-Verhalten in der Entwicklung

Wenn Sie eine Service-Konfiguration in services.yaml ändern, wird Symfony:

  1. Erkennen, dass die services.yaml Datei einen neuen Zeitstempel hat.
  2. Die alte gecachte Version ungültig machen.
  3. Bauen Sie den Cache mit der aktualisierten Konfiguration neu auf.

Dadurch wird sichergestellt, dass die Änderungen sofort in Ihrer Anwendung wirksam werden, ohne dass ein manuelles Löschen des Caches erforderlich ist.

Zusammenfassend lässt sich sagen, dass Symfony weiß, wie der Cache neu aufgebaut werden muss, indem es Datei-Änderungen, Zeitstempel und Konfigurationsänderungen überwacht. Dieser Prozess wird in der Entwicklungsumgebung zur Effizienzsteigerung automatisiert und in der Produktion zur Leistungsoptimierung manuell oder ereignisgesteuert durchgeführt.

Starten Sie Ihr digitales Projekt mit uns!