Ich arbeite an einem Symfony2-Projekt. Mein Projekt verwendet eine Datenbank zum Speichern der Daten und Doctrine2 zum Abrufen dieser Daten.
Da die Daten in der Datenbank gewachsen sind, wurden die Abfragen sehr langsam und die gesamte Web-App benötigt ungefähr 2 Minuten zum Laden oder Laden überhaupt nicht.
Der einzige Weg, wie ich sehen kann, dass ich das selbst beheben kann, ist einige Abfrageergebnisse zwischenzuspeichern, aber wie kann ich das tun? Es sei denn, es gibt einen anderen Weg, mit einem solchen Problem umzugehen.
Sie müssen Ihren Cache-Treiber in der Doku Konfiguration installiert und konfiguriert haben ( result_cache_driver
ist in Ihrem Fall wichtig). Sobald Sie dies erledigt haben, können Sie Doctrine
verwenden, um den Ergebnis-Cache zu verwenden, indem Sie useResultCache(true)
Überprüfen Sie diesen Blogbeitrag
HINWEIS : Standardmäßig wird der Ergebniscache in der Entwicklungsumgebung nicht verwendet
BEARBEITEN : da Sie DBAL
verwenden und ORM
nicht verwenden - SymfonyDoctrineBundle unterstützt diese Art von Cache nicht standardmäßig, aber Sie können diese Unterstützung selbst hinzufügen nach dieser detaillierte Anleitung
Im Entwicklermodus erstellt Symfony2 bei jeder Abfrage einen neuen Cache. Angenommen, Sie haben viele Abfragen, dann werden alle Abfragen nacheinander zwischengespeichert.
Das dauert länger als im Produktionsmodus, weil der Cache im Produktionsmodus nur einmal gespeichert wird.