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
aufdev
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
aufprod
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
oderbin/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:
- Erkennen, dass die
services.yaml
Datei einen neuen Zeitstempel hat. - Die alte gecachte Version ungültig machen.
- 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.