2016-07-28 4 views
1

Ich benutze ACF, um eine Reihe von Slots auf meiner Seite festzulegen. So ist der Admin-Bildschirm enthält eine Reihe von flexiblen Feldern, von denen jedes eine der folgenden sein kann:Erweiterte benutzerdefinierte Felder ist langsam auf Admin-Bildschirme

  • Beitrag
  • Kategorie
  • Tag

Funktioniert prima auf dem vorderen Ende. Ich kann Drag-and-Drop, wählen Sie Beiträge/Kategorien/Tags etc. aus der Datenbank und haben in der Regel eine gute Zeit.

Wenn Sie versuchen, der Seite am Back-End einen neuen Slot hinzuzufügen oder sie zu laden, wird die Zeit für das Hinzufügen einer neuen Zeile ungültig. Ich habe nur ein paar Reihen dort, aber es dauert schon unannehmbar lange; Ich bin ziemlich sicher, wenn ich ein paar mehr hinzufügen, werden wir Timeouts bekommen.

Die einzige Information, die ich über dieses Problem finden kann, ist diese Unterstützung Thread ist auf den ACF-Foren (https://support.advancedcustomfields.com/forums/topic/slow-backend-v-2-5-7/), die im Grunde sagt:

Ja, wenn Sie eine große Datenbank haben und versuchen und flexible Felder verwenden es werde das tun.

Ich verwende auch ACF-JSON ohne erkennbaren Effekt.

Hat jemand anderes dieses Problem erlebt? Was hast du getan, um es zu umgehen? Oder musstest du aufgeben?

(Idealerweise würde meine Lösung flexible Felder behalten, da sie genau das sind, was der Client in dieser Situation wünscht - aber wenn es eine andere Lösung gibt, die es ihnen ermöglicht, das Backend in linearer Zeit zu bearbeiten, interessiert mich das auch .)

Antwort

3

Es ist aufgrund der Art, wie ACF seine Repeater-Felder und flexible Felder lädt. Alle Layouts in flexiblen Feldern werden in dom und hidden geladen, und eine absolute Menge an JavaScript-Logik wird auf alle angewendet. Wenn Sie auf klicken, um einen neuen "Slot" hinzuzufügen, wird ein Klon des ausgeblendeten Layouts ausgeführt und alle erforderlichen Event-Handler an den Klon angehängt.

Wenn Sie die Zeitleiste für die Seite DOMContentLoaded vs load (finales Renderereignis) überprüfen, ist DOMContentLoaded eigentlich die meiste Zeit ziemlich schnell, aber das Laden (alles, was nach dem Laden des HTML geschieht) ist der größte Teil der Zeit und Erinnerung.

Am besten konnte ich die neue Option "Delay Initialization" für WYSIWYG-Inhaltsfelder aktivieren und die Optionen "Stylized UI" und "AJAX" für Auswahl-, Kontrollkästchen- und Radiofelder deaktivieren.

Letztlich sind die größten Probleme von tief verschachtelten Repeater/Flexfields in Repeater/Flexfields. Vermeiden Sie es, diese so weit wie möglich zu verschachteln, und die Seitenladezeit verringert sich erheblich.

0

Wenn Sie Erweiterungen verwenden, die auf Felder auf einer Seite zugreifen müssen, z. B. LastPass. Durch Deaktivieren dieser Erweiterung wird die Seite erheblich beschleunigt.