Wie kann das Hinzufügen von Knotenformularen mit etwa 50 Feldern beschleunigt werden?

7

Ich hatte ein Formular zum Hinzufügen von Knoten mit ungefähr 50 Feldern, hauptsächlich Text mit 1 Feldsammlung (mit weiteren 5 Feldern) und einigen Entitäts- und Begriffsreferenzen.

Das Laden der Seite dauert ungefähr 30 Sekunden, wodurch sie unbrauchbar wird.

Es gibt mehrere langsame Abfragen ( 99.28 - DrupalDatabaseCache :: getMultiple , 34.21 - views_plugin_query_default :: execute , 20.51 - DrupalDefaultEntityController :: load , 18.46 - DrupalDatabaseCache :: getMultiple, 17.46 - DrupalDatabaseCache :: getMultiple .. sie weitergehen)

Die Cache :: getMultiple-Abfrage enthält 1087 Platzhalter und die EntityController :: load 1084 Platzhalter.

Wenn Sie in der Feldsammlung auf "Ein weiteres Element hinzufügen" klicken, dauert der Vorgang weitere 30 Sekunden.

Was kann ich tun, um die Ladezeiten der Seite zu beschleunigen?

BEARBEITEN: Ich habe gerade APC installiert, das alle Caching-Abfragen entfernt, aber das Problem nicht gelöst hat - immer noch etwa 30 Sekunden Ladezeit. Ich glaube nicht, dass die langsamen Ladezeiten mit dem Caching zusammenhängen. Wird etwa 280 MB Speicher benötigt, wird die Seite erstellt.

BEARBEITEN: Durch Entfernen der Feldsammlung, Installieren von Memcache und Entitycache wurde die Ladezeit um 20 Sekunden verkürzt. 10 Sekunden zum anfänglichen Laden der Seite und weitere 10 Sekunden pro Ajax-Anforderung sind jedoch immer noch nicht akzeptabel. Wie funktionieren Webformulare mit einer großen Anzahl von Feldern? Vielleicht wäre das eine bessere Option?

Felix Eve
quelle
4
Sie können auch Memcache für die Speicherung des Cache-Fachs und APC für das Zwischenspeichern von Op-Code ausprobieren. Nach diesem Entitycache ist eine einfache Möglichkeit, die Leistung beim Laden von Entitäten zu verbessern
David Thomas
1
Nachdem ich mir das XHProf-Protokoll angesehen hatte, entfernte ich die Feldsammlung und das dauerte 15 Sekunden. Ich verwende jetzt stattdessen das Mehrfeldmodul, obwohl es instabil ist. Die Installation von Memcache und Entitycache dauerte weitere 5 Sekunden, sodass ich jetzt weniger als 10 Sekunden habe.
Felix Eve

Antworten:

3

Haben Sie darüber nachgedacht, mehrstufige Formulare für Ihre Knotenerstellung zu verwenden?

Da Sie viele Felder haben, können Sie dies beim Laden mehrerer Seiten über verschiedene logische Schritte tun. Es gibt viele Tutorials für die Implementierung von mehrstufigen Formularen in Drupal, und das Beispielmodul wird mit einem geliefert.

Badri
quelle
Ich denke, das ist ein großartiger Vorschlag. Ich habe das Formular so schnell wie möglich erstellt, um es auf einer Seite zu halten. Wenn der Client mit den Ladezeiten unzufrieden ist, schlage ich dies als Alternative vor.
Felix Eve