Wordpress Formular Performance

A

AppZ

Gast
Moin moin,

nachdem ich das halbe Internet durchgewühlt habe und bisher keine Lösung gefunden wurde möchte ich mein Problem einmal hier schildern.

Ich habe eine Wordpress website die momentan in MAMP auf meinem Laptop läuft. Ich habe ein recht komplexes Benutzerformular, knapp 1000 Eingabefelder. Momentan habe ich davon ca 200 erstellt und die Ladezeit der Website wächst jetzt bereits stark an, auf knapp 15 sek.
Ich habe mir Query Monitor heruntergeladen um zu schauen was so lange braucht, dies hat aber auch nicht geholfen da der wohl nur der Seitenaufbau gemonitored wird, der braucht ca 0,3 sek.

Hat irgendjemand eine Idee wo das Problem liegen könnte? Hat mein MAMP Server vielleicht zu wenig ressourcen oder ähnliches?

mfg
AppZ
 
Das Formular aufsplitten.

1000 Felder auf einer Seite sind nicht benutzbar.

Desweiteren ist Wordpress in seiner Grundform bzw. mit normalen Plugins nicht zu gebrauchen dafür, da viel zu inperformant. Es könnte helfen die Felder bspws. als eigene HTML bzw. PHP Datei abzulegen und dann zu inkludieren, da dann nichts dabei berechnet wird sondern nur die Datei geladen wird

Lg
 
Mit 60% Marktanteil ist wp wohl nicht so schlecht. (https://de.statista.com/themen/3086/wordpress/)

Was ist den das für ein Formular? Hört sich eher nach einer Umfrage an? Ich würde es auch auf mehrere Seiten auslagern. Sessionbasierend eventuell. Laufen den Scripte? Jquery? Das sollten solche develppment tools im Browser analysieren können.
 
AppZ schrieb:
Ich habe eine Wordpress website die momentan in MAMP auf meinem Laptop läuft. Ich habe ein recht komplexes Benutzerformular, knapp 1000 Eingabefelder. Momentan habe ich davon ca 200 erstellt und die Ladezeit der Website wächst jetzt bereits stark an, auf knapp 15 sek.
Ich habe mir Query Monitor heruntergeladen um zu schauen was so lange braucht, dies hat aber auch nicht geholfen da der wohl nur der Seitenaufbau gemonitored wird, der braucht ca 0,3 sek.

Hat irgendjemand eine Idee wo das Problem liegen könnte? Hat mein MAMP Server vielleicht zu wenig ressourcen oder ähnliches?

mfg
AppZ

Wordpress ist Datenbankseitig der absolute Hass, du musst dir das so vorstellen dass da für jedes Feld erstmal Regeln durchgerödelt werden und vor allem für jedes Feld ein eigener Request an die Db läuft. Das ist jetzt der Moment wo du dir überlegen solltest ob WP wirklich dein Ding ist.
Wenn es nicht anders geht musst du überlegen ob du die WP Logik übergehen kannst und zB die 1000 Felder serialisiert in ein Feld in die Db hängst, dann verlierst du natürlich die WP Kontrollen usw dahinter, die müsstest du dann wrappen.
Oder optional schreibst du die 1000 Felder aber in einer einzelnen Transaction (wobei ich auch das schon kritisch seh, dann musst du für jeden Post grundsätzlich 1000 Felder abholen, und lass mal 1000 Posts da sein, da muss die Db schon echt rödeln).

Sprich dein Problem wird jetzt sein deine 1000 Felder so in der Posts Tabelle oder den Metadaten zu verteilen, dass es nicht völlig eskaliert bei normaler Nutzung.

Edit: wenn du nicht verstehst was ich meine guck dir mal im Phpmyadmin die Datenbank von WP an, da gibts ne Post Tabelle für den Eintrag und ne Metatabelle für das Zeug dahinter, das wars so grob. Heisst du wamst jetzt grad wahrscheinlich 1000 Zeilen in die Metatabelle, jede läuft erstmal über ein Objekt das von Objekten über Objekte erstellt wird und da läuft noch jeweils Logik drüber.
Ergänzung ()

FranzvonAssisi schrieb:
Das Formular aufsplitten.

1000 Felder auf einer Seite sind nicht benutzbar.

Unter Wordpress in seiner Normalform sollte man dazu sagen. Php an sich hat Null Probleme mit X Tausend Inputfeldern, und selbst performanceseitig ist das Problem eher dass du 200.000 Inputs im Browser rendern musst, Php an sich lacht da nur drüber :D
 
Zuletzt bearbeitet von einem Moderator:
An sich ja, aber nicht mit der unterirdischen Programmierung, die einige Plugins haben...

Bei Wordpress geht das echt schnell, dass alle Seiten langsam werden, wenn man paar Plugins aktiviert, da 1. die meisten Nutzer sich keine Gedanken darum machen, dass das Plugin immer ausgeführt wird bei Seitenaufrufen (und nicht nur auf Seite XY wo die Funktion gebraucht wird) und 2. Einige Plugin-Entwickler nicht nachdenken. Ich hab schon alles gesehen von geladenen Skripten, obwohl nichts über das Plugin eingebunden war bis hin zu geladenen Schriftarten, weil die CSS-Datei eingebunden war und natürlich Selektoren so nutzt, dass die Schriftart geladen wird...

Klar, wenn das Plugin dann gebraucht wird, ist der Inhalt zwei Sekunden schneller da, dafür sind alle anderen Seiten langsamer...

Ach ja, ich hatte auch Mal ein Plugin für die Metadaten, dass tatsächlich durch Datenbank-Abfragen geloopt ist anstatt eine allgemeine Anfrage zu machen und dann durch die Ergebnisse zu loopen (!)

Und das war auch das, was ich mit "Wordpress ist nicht geeignet" meinte - keine Frage, ich mag Wordpress als CMS, aber bei Plugins oder speziellen Anliegen muss man tlws. "selber Hand anlegen"

Lg
 
Gut, dass habe ich befürchtet. Die Datenbankstruktur ist schon sehr simpel, dass dann sehr komplexe Aufgaben zu hohem Load führen, ist ja eigentlich logisch.

Ich habe schon ein Backup mit Drupal aufgebaut. Dort habe ich leider deutlich weniger annehmlichkeiten im Backend als mit Wordpress, da sind schon wirklich gute Plugins dabei. Mit denen von Drupal bin ich nicht sonderlich zufrieden.
Aber gut, dann werde ich erstmal mit Drupal weiter machen und versuchen, dort alles so gerade zu biegen, dass es einigermaßen gleichwertig aussieht.

Die Performance ist dort im Frontend bei höherer Field-Anzahl deutlich besser.

EDIT: Oder gibt es da eine Alternative? Ich habe bisher Wordpress, Typo3 und Drupal auf dem Schirm gehabt.
 
Was willst du denn überhaupt machen, fangen wir doch erstmal da an ;)
 
  • Gefällt mir
Reaktionen: mastaqz
@mambokurt

Ich möchte eine Website erstellen, welche einen Frontend-User-Bereich hat. Also Benutzer können einen Account erstellen, dann auf bestimmte Seiten zugreifen, welche individuellen Output liefern.

Der Output ist abhängig von den im User-Profil angelegten Daten. Es gibt sehr viele Daten die angelegt werden können, mit allen Conditionals aktiv ca 1000.

Der individuelle Output ist dann eine Auswertung der Daten, durchschnitte, vergleiche usw...

Wenn ichs runterbreche benötige ich eine große, anpassbare registrierung/profileditor und die Möglichkeit z.B. über php sql abfragen in Diagramme zu packen.

In weiteren Schritten sollen dann noch andere User-Arten dazu kommen, welche andere User in Listen anschauen können usw...
 
Musst du User mit Usern vergleichen nach bestimmten Datenpunkten oder nach bestimmten Werten in den Daten filtern?
 
@mambokurt
Ich möchte über einzelne Datenpunkte, z.B. Alter, den Durchschnitt ermitteln und diesen dann mit dem Wert des aktiven Users vergleichen.

Dass ich das ganze schaffe ist auch nicht das Problem, das Problem ist eher das verwalten von Usern mit so großen Datenmengen. Zumindest ist das der Teil, bei dem Wordpress nicht mehr mitmacht, was tatsächlich schade ist da es mit einigen Plugins nahezu die vollständige Funktionalität mitbringt, die ich benötige.
 
Zuletzt bearbeitet von einem Moderator:
Ok, also grundsätzlich brauchst du es dann als Einzelwerte in der Datenbank, sonst hät ich gesagt knall es einfach als JSON in ein einzelnes Feld.
Was für Plugins von Wordpress wolltest du denn nutzen?
 
@mambokurt
Momentan nutze ich ultimate member für die user verwaltung, woody ad snippets für php und loft loader zur verschönerung der Wartezeit, welche aber leider zu groß wird.
 
Da hast du das Problem, das woody adsnippets wirds sein was so lahmt.

Ich an deiner Stelle würde ein Wordpressplugin schreiben. Deine 1000 Feldnamen + Typ schreibst du in ein Array im Code, das kannste mit foreach durchrödeln fürs Formular, um die Variablen aus dem Post zu kriegen und um eine 1000 Spalten breite Tabelle anzulegen, verknüpft über die PostId oder UserId mit Wordpress.

Bauchgefühl sagt dann dauert das Speichern < 1 Sekunde....
 
@mambokurt

Woody adsnippets macht keinen Unterschied, egal ob aktiviert oder deaktiviert, die Performance ist die gleiche.
Was mir gerade noch aufgefallen ist, Ultimate member zeigt mir im profil die Daten an, dieser Vorgang dauert nicht lang und ist in einer Sekunde erledigt. Das Laden der Konto-Bearbeiten Seite dauert hingegen ewig.

Und ein Wordpressplugin selbst schreiben traue ich mir nicht zu. Vielleicht kleinere Anpassungen in einem bestehenden Plugin.
 
Achso, ich dachte du hättest mit woody das ganze Html gemacht... Naja, wie gesagt: sind halt 1000 Inserts, wenn du das nicht über eigenen Code auf einen runter bekommst hast du schlechte Karten. Irgendwo wirst du eh ein Plugin machen müssen, oder wie wolltest du da Vergleiche und Durchschnitte ermitteln, das macht WP ja auch nicht allein ;)
 
Ich würde für das Vorhaben einen individuellen Tech Stack empfehlen und kein fertiges CMS dafür verwenden. Die fertigen CMS lassen sich zwar "hübsch" verwalten aber die Anforderungen, die du da anführst werden so ziemlich jedes CMS früher oder später total überfordern. Das ist einfach out of scope für so ein System.

Falls es in PHP laufen soll, würde ich zum Beispiel so einen Tech Stack wählen:
  • SLIM Framework
  • TWIG View für das Slim Framework
  • JWT Auth für das Slim Framework
  • Ein Frontend Framework (React / vue.js / Bootstrap native)
  • Ggf. RabbitMQ als Message Broker
Ggf. dann auch gleich über das Verteilen von Services nachdenken.
Frontend Datenaufrufe laden Dinge aus einer REST API über den Message Broker, die getrennt vom Service für die Views laufen, usw. usf.

Das Problem ist, dass du es dir nicht zutraust ein Wordpress Addon zu schreiben. Dann kannst du aus meiner Sicht so ein System, wie es dir vorschwebt gar nicht umsetzen, denn wenn du das könntest, wäre ein Wordpress Plugin eine 5 Minuten Übung zum aufwärmen. Tut mir leid das vernichtende Urteil; aber das ist meine Meinung dazu.
 
Zuletzt bearbeitet:
@mambokurt
Die INserts scheinen nicht das Problem zu sein. Das Formular zu submiten dauert nicht lang, nur das initiale Laden des Formulars dauert ewigkeiten.
Die Vergleiche mache ich über php code in woody.

@ayngush
Keine Sorge, den Gedanken habe ich auch des öfteren ;)
Es ist nicht so dass ich das generell nicht könnte, nur habe ich um ehrlich zu sein nicht umbedingt Lust dazu...
Ich versuche einfach so viele vorgefertigte Lösungen zu nehmen wie möglich, deswegen dachte ich, dass ein CMS System mit einer Userverwaltung eigentlich eine gute Grundlage sein müsste.

Edit: Da Ultimate Member auch noch an anderen Stellen performance-probleme hat, werde ich um eine andere Lösung wohl nicht drum rum kommen. Welches System würdet ihr zum selbständigen Anpassen empfehlen? Drupal oder Wordpress?
 
Zuletzt bearbeitet von einem Moderator:
AppZ schrieb:
@mambokurt
Die INserts scheinen nicht das Problem zu sein. Das Formular zu submiten dauert nicht lang, nur das initiale Laden des Formulars dauert ewigkeiten.
Die Vergleiche mache ich über php code in woody.

Das ist seltsam, vlt baut der nach Insert noch indices oder irgendwelche stats 0.o

Ich an deiner Stelle würde mal xdebug anschalten und das profilen (google xdebug profiling), so kommst du vllt mal dahinter in welcher Funktion es lahmt und kannst vllt gegensteuern, wär jetzt mein erster Ansatz, nur um mal zu sehen was da genau hängt...
Ergänzung ()

AppZ schrieb:
Edit: Da Ultimate Member auch noch an anderen Stellen performance-probleme hat, werde ich um eine andere Lösung wohl nicht drum rum kommen. Welches System würdet ihr zum selbständigen Anpassen empfehlen? Drupal oder Wordpress?

Haste denn ohne ultimate member überhaupt noch das was das Cms an sich nötig gemacht hat? Oder war das nur dass es hübsch aussieht?
 
Warum brauchst du denn überhaupt ein CMS? Nimm doch dein Lieblings-PHP-Framework und setzt es damit um.
Ein CMS ist gut, damit Leute die keine Ahnung von HTML/CSS haben, in der Lage sind den Inhalt von Seiten zu verwalten, doch darum gehts hier doch gar nicht, oder?
 
@Sparta8
Teils Teils, es ist schon so dass der Baukasten durchaus willkommen ist. Es gibt Menüstrukturen, Unterseiten, Bloginhalte usw. Aber das Herzstück der Seite soll schon Der User mit der Auswertung sein.

@mambokurt
Eigentlich nicht.

Ich habe ein CMS gewählt weil ich damit eben um das Coding herum komme, zumindest bisher. Vor dem Teil ist mir schlichtweg ein bisschen bange da ich sehr wenig Erfahrung habe. Generell kann ich nur ein bisschen Java und so mittel viel c#.
Im Bereich Web-Entwicklung war ich bisher nicht unterwegs und dachte, dass ich mit einem CMS um eine intensivere Außeinandersetzung mit dem css, html, php und js herum komme.
 
Zurück
Oben