Symfony2 und Twig Rendern performance-Probleme
Genau wie in diesem Thema, ich habe ein performance-Problem in dev-Modus beim hinzufügen eines Zweig "render" - tag in meiner app (die zugehörige Dokumentation: Die Einbettung Controller).
Ohne dieses render-tag, meine Seiten erzeugt werden, in weniger als 70 ms.
Mit dem render-tag, es ist mindestens 170 ms.
Und jeder render-tag Hinzugefügt, in der app erhöht den page generation von 100 ms (das ist EINE MENGE : warum nicht eine normale Seite laufen in 60 ms und ein render-tag in 100 ms?).
Vielleicht brauche ich 4 oder 5 davon auf jeder Seite meiner app, so würde das bedeuten, dass mindestens 500 ms für jede Seite, die im dev-Modus.
Ich kann Total verstehen, dass es kein problem ist in prod-Modus, aber es ist eindeutig nicht wohl in Entwicklung.
Also, weiß jemand, jeder Weg, um loszuwerden, jede unnütze Aufrufe, Protokolle oder code während der Verwendung von "render" - tag in der dev-Modus?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich erklärt es nur 10 Stunden. Lange Rede, kurzer Sinn: Migration auf Twig-extensions.
app/config.yml
. Nur anderen Weg, um Dinge zu vollbringen. Nichts zu streiten, tatsächlich :).Einer meiner Lieblings-features in symfony wird das render-tag für die Einbettung controller Aufrufe. Der profiler fügt eine Menge Aufwand, um alle controller ruft allerdings nicht nur die Geschwindigkeit, sondern verwendet eine Menge von Speicher. Sie haben ein paar Optionen, um ihn zu beschleunigen.
Der profiler schreibt alle Daten in eine sqlite-Datenbank, die standardmäßig. IIRC sqlite nicht erlaubt, parallele Einsätze, so dass jede Anforderung haben, um für Ihren Zug warten, um den Zugriff auf die db zu leeren Daten-Sammler. Sie können der Nutzung Ihrer Entwicklungs-db (mysql oder was auch immer Sie verwenden) zu bestehen profiler-Daten. Vor einem Jahr gewann ich eine Menge mit diesem, in Bezug auf Geschwindigkeit.
Können Sie auch deaktivieren Sie den profiler für sub-Anfragen, oder verwenden Sie nur den profiler, wenn eine Ausnahme passiert. Sehen das framework Referenz-config für die vollständigen details.
Können Sie die controller-Logik zu einem service-und verweisen darauf, wie der Zweig Globale variable und dann das gerenderte template durch den controller.
Sehen https://stackoverflow.com/a/13245994/982075 für Anweisungen.
Hängt die Wahl auf Ihre Bewerbung. Ich glaube, dass die praktischen Möglichkeiten sind:
1) Verwenden Sie die
render
tag für schwere gerendert Vorlagen an, und verwenden hinclude Bibliothek zu laden, die in einer asynchronen Weise. Dies ist sehr hilfreich, wenn jedes template gerendert werden ist "langsam" von selbst (z.B. viele db-verbindungen, große Texte, etc.).2) Machen Sie es wie vorgeschlagen von m2mdas. Dies ist eine sehr schnelle Lösung für die gängigen Fälle auf.
Ich würde auch Folgen, Elnur s Vorschlag mit twig-extensions. Eine alternative wäre die Verwendung von Sonata Block-Bundle: http://sonata-project.org/bundles/block/master/doc/index.html . Der Aufwand für eine subrequest mit Sonata Block ist etwa 7ms anmutigen.