Joomla 5 Notice

We are pleased to announce that as of January 29, 2024, all of our Joomla extensions are compatible with Joomla 5.

For all who are still updateing from Joomla 3 to Joomla 4: Joomla 4 Migration instructions are available here:

There is now a separate Documentation for Visforms for Joomla 4 and for Visforms for Joomla 5!

Forum

Visforms Subscription user can ask questions in our forum. Please log in with the relevant user first.
Everybody can access the forum for reading.

Please only ask 1 question per topic.

Important information for almost every question:
V1: Which Visforms version is running?
V2: Which Joomla version is running?
V3: Which PHP version is running?

Plugin Content Data View: Extrem lange Ladezeiten bei vielen Daten

More
4 years 7 months ago #6710 by HDsports
Hallo,
ich setze das Plugin Content Data View für die Ausgabe von Ergebnislisten einer Laufveranstaltung ein. Im Prinzip eine tolle Sache, nur mit Zunahme der Einträge entstand ein massives Performance-Problem.

Das Formular hat mittlerweile 1.600 Einträge.
Mittels fieldselect wird ausgewählt welche Einträge angezeigt werden (z.B. nur Bewerb Marathon und nur Frauen).

Nur steigt mit der Anzahl der Formulareinträge die Ladezeit (v.a. TTFB) massiv an, unabhängig davon ob über den Filter nun nur ein Eintrag oder 1.000 Einträge gelesen werden.

Hier ein Beispiel:
www.hdsports.de/wettkampf/1-anti-corona-run-ergebnisse?start=1

Code
Code:
{vfdataview}{"formid":"27","fieldlist":"198,201,205,199","fieldselect":{"207":"Marathon","208":"w"},"show_page_heading":"false","sortorder":"199","viewclass":"table1","show_filter":"true","displaydetail":"true","displaycounter":"true","displaypdfexportbutton":"false","sortdirection":"asc","maxtextlength":"20","display_num":"10000"}{/vfdataview}

Ich habe bisher über die Filtereinstellungen keine Möglichkeiten gefunden, das Problem zu heben. Den Filter zu löschen (fieldselect) erhöht die Ladezeit nur noch mehr, display_num auf nur 5 zu stellen, ändert ebenfalls nichts an der Ladezeit. Ich könnte den Code auch auf das Mindeste reduzieren, wie etwa:
Code:
{vfdataview}{"formid":"27","fieldlist":"198,201,205,199","fieldselect":{"207":"Marathon","208":"w"}{/vfdataview}
Es ändert sich aber nichts an dem Problem mit der Ladezeit.

Ich bin kein Experte und das sich die Ladezeit beim Auslesen der Daten leicht erhöhen kann, wenn mehr Daten vorhanden sind, ist mir bewusst, aber solch eine derart lange Ladezeit halte ich für ungewöhnlich bzw. ist nicht im Sinne des Nutzers. Ich wollte mir über "System debuggen" die Abfrage ansehen, nur erhalte ich dann leider ein weißes Fenster (das allerdings nur bei Artikel, wo vfdataview im Einsatz ist.

LG

More
4 years 7 months ago #6721 by Administrator AV
Hallo,

danke für deinen Beitrag.

Die Ladegeschwindigkeit ist ein komplexes System und ich habe mir über deinen Post eine ganze Menge Gedanken gemacht.

An erster Stelle ist visForms eine Formularkomponente mit der Möglichkeit die übertragenen Daten auch zu speichern und zu nutzen.
Bei der Entwicklung gibt es immer wieder widerstreitende Interessen der unterschiedlichen Feature und eine Entscheidung zu gunsten von Feature A zu treffen, kann bedeuten, dass man bei Feature B Abstriche machen muss.

Bislang hat niemand von einem solchen Performance-Problem berichtet und ich denke, dass es wahrscheinlich auch nur ganz wenige visForms Installationen gibt, in denen in einem Formular so viele Datensätze gespeichert werden. Es ist also in der Praxis ein sehr seltener Use-Case. Und visForms ist hierauf nicht optimiert.

Insgesamt ist visForms so optimiert, dass es im Hinblick auf die Erstellung und Nutzung des Formulars besonders flexibel ist und hier besonders viele Feature bietet.
Dies kommt im Bereich der Datenhaltung und -nutzung zu einem Preis.

Hast du dich bei den Joomla! Custom Fields schon einmal darüber geärgert, dass du den Feldtyp nachträglich nicht mehr ändern kannst?
Für eine Formularkomponente wie visForms ist das meines Erachtens ein no-go und deshalb kannst du bei visForms prinzipiell auch immer den Typ eines Feldes ändern.
Die Konsequenz dieses Features ist, dass die Datenbankfelder in denen die Formulardaten gespeichert werden, bei allen in visForms angelegten Feldern, immer den Datenbank-Feldtyp "Text" haben.
Zu versuchen, einen Formularfeldtyp angepassten Datenbankfeldtyp zu verwenden (z.B. Zahl im Formular und int in der Datenbank), würde bedeuten, dass man bei jeder Formularfeldtyp-Änderung auch den Datenbankfeldtyp anpassen muss und das macht die Sache auf jeden Fall super aufwendig.

Gute Performance auf großen Datenmengen erreicht man, indem man wichtige Datenbankfelder indiziert.
Datenbankfelder vom Typ Text können aber nicht indiziert werden.

Ein zweiter "Problempunkt" sind die Formularfelder mit Optionen, bei denen eine prinzipiell Mehrfachauswahl einstellbar ist (Listbox, Checkbox-Gruppe).
Prinzipiell werden hier alle gewählten Optionen in einem Datenbankfeld aggregiert gespeichert.
Will ich nun über eine Filtereinstellung in einem SQL-Where Statement nur die Datensätze aus der Datenbank ziehen, die in diesem aggregierten Wert eine bestimmte Option enthalten, dann fürhe ich in dem SQL-Where Statement einen Textvergleich durch und das ist bekanntlich ein "teuer" Zugriff.
In deinem Fall sind 2 solcher Filter bereits im Plugin-String eingebaut.

Ich gebe auch gerne zu, dass optimale Performance bei großen Datenmengen bei der Entwicklung der Datenanzeige-Feature und besonders auch der Daten-Filter nicht mein Hauptentwicklungsschwerpunkt war.

Ich weiß nicht, ob das gesamte Performance-Problem bei der Datenanzeige auf deiner Webseite allein durch visForms selbst erzeugt ist oder ob da auch noch andere Faktoren rein spielen, aber dass die Performance bei einer großer Anzahl an Datensätzen und komplexen Filtern spürbar schlechter wird, das ist sicher richtig.

Ich gehe davon aus, dass, wenn ich den entsprechenden Code unter dem Aspekt der Performance-Optimierung durchgehe, sich die Performance sicher verbessern lässt.
Ich werde das auf meine ToDo-Liste setzen und mich zu gegebenem Zeitpunkt damit befassen.

Es tut mir leid, das ich im Moment keine bessere Nachricht für dich habe.
Vielleicht helfen dir meine Ausführungen einen Weg zu finden, deinen Seite so aufzubauen, dass du nicht in dieses Performance-Problem läufst.

Gruß,
Aicha

:idea: I recommend you the new and up-to-date documentation for Joomla 4:
docs.joomla-5.visforms.vi-solutions.de/en/docs/
Most of this also applies retrospectively to Joomla 3.
Please only ask 1 question per topic :-).

:idea: Ich empfehle Dir die neue und aktuelle Dokumentation für Joomla 4:
docs.joomla-5.visforms.vi-solutions.de/docs/
Das meiste gilt rückwirkend auch für Joomla 3.
Bitte immer nur 1 Frage pro Thema stellen :-).

More
4 years 7 months ago - 4 years 7 months ago #6729 by HDsports
Hallo Aicha,
danke für die ausführliche und erklärende Antwort.

Dann werde ich vorerst pro Lauf und pro Geschlecht ein eigenes Formular verwenden. Dann benötige ich bei einem Event mit 10 Bewerben zwar 20 Formulare. Die Ladezeit sollte allerdings aufgrund der geringeren Anzahl an Einträgen pro Formular und der reduzierten Anzahl an Listboxen (Geschlecht, Bewerb benötige ich nicht mehr) deutlich kürzer sein.

LG und schönes Wochenende
Last edit: 4 years 7 months ago by HDsports.

More
4 years 7 months ago #6731 by HDsports
Eine wichtige Anmerkung, die mir aufgefallen ist:

Die lange Ladezeit kommt bei mir vor allem deswegen zustande, da ich auf der bisherigen Ergebnisseite, den vfdataview-Code mehrmals integriert habe (Marathon Herren, Marathon Damen, Halbmarathon Herren usw).

Zwar hatte ich für die einzelnen Bewerbe "Seitenumbrüche" verwendet, trotzdem werden beim Aufruf einer Unterseite alle Abfragen ausgelöst. Nun habe ich für jeden Bewerb einen neuen Beitrag verwendet, mit dem Resultat einer deutlich geringeren Ladezeit (TTFB) als bei einem Beitrag mit Seitenumbrüchen. Bei einigen hundert Einträgen steigt zwar auch hier die Ladezeit an, aber in einem deutlich erträglicherem Maße als bisher.

More
4 years 7 months ago #6737 by Administrator AV
Hallo,

danke für diese Zusatzinformation.
Das ist gut zu wissen.

Gruß und frohe Ostern,
Aicha

:idea: I recommend you the new and up-to-date documentation for Joomla 4:
docs.joomla-5.visforms.vi-solutions.de/en/docs/
Most of this also applies retrospectively to Joomla 3.
Please only ask 1 question per topic :-).

:idea: Ich empfehle Dir die neue und aktuelle Dokumentation für Joomla 4:
docs.joomla-5.visforms.vi-solutions.de/docs/
Das meiste gilt rückwirkend auch für Joomla 3.
Bitte immer nur 1 Frage pro Thema stellen :-).

Moderators: Administrator AVAdministrator IV
Powered by Kunena Forum