5 Reaktionen zu “Langsame Repositories in BE-AJAX-Requests”

Kommentare abonnieren (RSS) oder TrackBack URL

Gibt es einen bestimmten Grund, warum hier unbedingt Extbase genutzt werden muss? Für hochperformante AJAX-Aufrufe ist die Kombination eID+t3lib_db/DatabaseConnection kaum zu übertreffen, da es praktisch keinen Overhead gibt.

Mathias Brodala am 25. Februar 2014 um 10:41

Wenn möglich sollte man mit ExtBase auch immer das Repository nutzen, sonst verliert man ja den Vorteil der Modell Ebene. Sprich wenn ich Logik in meiner Modell- oder Repository- Klasse abbilde (z.B. spezielle Rechte etc.) dann muss ich die bei einem direkten SQL Statement ja nachbilden, was wiederum die Code-Maintenance drastisch erhöht und auch Fehlerquellen mit sich bringt. Natürlich gibt es aber Fälle wo der Query Builder einfach zu ineffizient ist. Vor allem dann, wenn man über mehrere Tabellen komplexe Abfragen machen möchte. Aber auch da kann man nach der Abfrage das ganze wieder in ExtBase Modell Objekte umwandeln, so dass man auch dort die Modell-Ebene sauber abfängt.

Jonas am 26. Februar 2014 um 07:15

PS: Sollte man das nicht als Branch in Gerrit bereitstellen?

Jonas am 26. Februar 2014 um 07:16

@Mathias: Um „mal eben“ ein paar Daten aus der DB zu holen ist Deine Version definitiv super und performant. Je mehr Logik Du in Deine Modelle gebaut hast, desto lieber willst Du diese ja auch verwenden. Automatische Validierung, Texte croppen, implementierte Bilduploads. All das müsstest Du in Deinem eID-Script nachbauen.
@Jonas: Meine Art der Performanceoptimierung lässt die Hände der Coreentwickler über den Kopf zusammen schlagen. Grad gestern wieder mit einem gesprochen und auf diese Beiträge hier verwiesen „Oh mein Gott“ war die Antwort. Auch in Gerrit sind meine Patches nicht nur mit -1 sondern direkt mit -2 abgelehnt worden. In Venlo will ich das Thema mal ansprechen. Bis dahin poste ich es hier und jeder kann für sich entscheiden, ob er es einbauen will oder nicht.

Stefan Frömken am 26. Februar 2014 um 08:10

@Stefan: Das klingt allerdings, als würden die Models hier bereits viel mehr machen, als sie sollten. Wenn man sich strikt an die Aufgabenverteilung im Extbase/Flow-MVC-Stack hält, sollte ein Model ausschließlich als Datenspeicher dienen. Sämtliche Anwendungslogik gehört in einen Controller oder Service, eingeschränkt gerne auch in ein Repository.

Bitte nicht falsch verstehen: ich liebe den Komfort, den mir der MVC-Stack bietet. Bei Diensten mit hohen Anforderungen an Performance sollte man allerdings genau abwägen, wie viel dieser Komfort wert ist, wenn man dafür an anderer Stelle keine Optimierungsmöglichkeiten hat. Oder wie hier eben grenzwertige Wege beschreiten muss.

Bei all dem darf man natürlich nicht vergessen, was in der kommenden Version 6.2 von TYPO3 CMS an Optimierungen bzgl. Performance vorgenommen wurden. Aktuell hängen konkret bzgl. Extbase noch mindstens zwei Änderungen im Review, die die Datenbank-Interaktion merklich beschleunigen sollten. (https://review.typo3.org/27426 & https://review.typo3.org/27555) Die Kommunikation via AJAX sollte auch hiervon profitieren.

Mathias Brodala am 26. Februar 2014 um 08:40

Kategorien

Archiv