Schreckliche Frontend-Leistung bei großen CCK-Formularen = schlechte UX. Was sind meine Optionen?

7

Ich habe eine ziemlich große Knotenform für einen meiner Inhaltstypen. Nehmen wir an, es hat ungefähr 100 Felder. Viele dieser Felder sind Textwerte mit unbegrenzten Werten, daher verwendet der Benutzer eine AJAX-Schaltfläche, um jedem dieser Felder ein weiteres Element hinzuzufügen. Optisch ist dieses Formular nicht allzu einschüchternd, da ich Feldgruppen verwendet habe, um die Dinge vernünftig zu halten.

Problem: Das Klicken auf "Ein weiteres Element hinzufügen" ist sehr langsam. Wie sehr langsam.

Ich dachte, es sei die Serverleistung, aber dann habe ich es in Firebug ausgecheckt - die Anfrage dauert nicht so lange, aber WOW - die clientseitige CPU-Auslastung (in Chrome, Firefox und jedem anderen Browser, den ich ausprobiert habe) erreicht 100% und bleibt dort für bis zu 11-12 Sekunden, und dann wird die AJAX-Anforderung abgeschlossen.

Das ist verrückt.

An diesem Punkt bin ich mir nicht sicher, welche Optionen ich habe. Kann ich die Form irgendwie auseinander brechen? Workflow-Stil? Viele Leute erwähnen Feldgruppen als eine Möglichkeit, eine Menge Felder zu organisieren, aber das hilft natürlich nicht der Leistung.

Jede Hilfe geschätzt.

Doug Estey
quelle

Antworten:

2

Ich habe genau dieses Problem und kann Antwort 1 bestätigen - mit einem mehrstufigen Formular verbesserte ich die Leistung, obwohl es immer noch langsam war.

Das Problem ist, dass beim Auslösen des Ajax das gesamte Formular im Hintergrund neu erstellt wird. Dies scheint große Anforderungen an die Server-CPU zu stellen, wenn das Formular groß ist.

Ein mehrstufiges Formular ist ein guter Weg, um Dinge zu verbessern, wird aber leider nicht immer angemessen sein - in meinem Fall lehnte der Kunde es ab, weil er es für zu ärgerlich hielt, das Formular schrittweise linear durchlaufen zu müssen Weg. Sie wollten in der Lage sein, von Tab zu Tab zu springen, ohne dazwischen zu speichern.

Abgesehen davon, dass der Drupal-Kern so repariert wird, dass für das Wiederherstellen des Formulars nicht maximal 20 Sekunden CPU erforderlich sind, kann ich mir nur vorstellen, die Site auf einem Hosting-Paket mit hoher CPU-Auslastung auszuprobieren, z. B. auf Amazon AWS. Dies wird mein nächster Schritt sein.

Ohne viel über Drupal Core und Ajax zu wissen, würde ich dies eine Art Fehler nennen. Ich habe gehört, dass die Leistung von Ajax in Drupal 8 verbessert wird, daher bezweifle ich ernsthaft, dass in D7 große Anstrengungen unternommen werden, um dieses Problem zu lösen.

Wenn ich das alles zu Beginn meines Projekts gewusst hätte, hätte ich möglicherweise Lösungen wie das Kombinieren mehrerer Knotenformulare auf einem Registerkartenfeld ausprobiert, um die Serverlast auf kreativere Weise aufzuteilen.

Alan Peart
quelle
1

Sie sollten wahrscheinlich ein mehrstufiges Formular verwenden. Dies kann mit der CTools-Modulsuite fast einfach durchgeführt werden .

Maxime Topolov
quelle