Jetzt einstellen: Sind Sie ein engagierter und motivierter PHP-(Laravel)-Entwickler?
img

Wie wir langsame API-Anfragen auf einer WordPress-Website gefunden haben

und nach den Korrekturen eine mehr als 40-fache Geschwindigkeitssteigerung erzielt haben

Background

Wir entwickeln eine Bildungsplattform, die Ihnen ermöglicht:

Unterrichtspräsentationen mit Folien verschiedener Inhaltstypen zu erstellen

Diese mit anderen Lehrern zu teilen

Inhalte zu klonen und zu bearbeiten, um sie an verschiedene Altersgruppen anzupassen

Diese Präsentationen Schülern zu zeigen und Feedback in Form von Antworten auf Fragen zu erhalten

Wie wir langsame API-Anfragen auf einer WordPress-Website gefunden und behoben haben

Alle Aktionen mit Inhalten beinhalten große Datenmengen und aktive Kommunikation mit der Datenbank.

Einige Zeit nach dem Teststart des Projekts stellten wir fest, dass das Laden, Speichern und Klonen von Lektionen zu viel Zeit in Anspruch nahm. Dies veranlasste uns, das Problem im Detail zu untersuchen und auf der Grundlage der identifizierten Engpässe nach Lösungen zu suchen.

Technischer Stack der Plattform

Code

Wir verwendeten WordPress als Engine und das bekannte LearnDash-Plugin, um die Funktionalität des Lernmanagementsystems (LMS) zu implementieren. Diese Kombination ermöglichte es dem Kunden, die notwendige Funktionalität zu entwickeln und in kurzer Zeit eine Demo zu starten, um die Wahrnehmung durch Endbenutzer zu testen. Im Zuge der Anforderungsänderungen mussten wir die meisten von LearnDash bereitgestellten Funktionen aufgeben und den Ansatz zur Inhaltserstellung umstrukturieren – Kurse durch Lektionen und Lektionen durch Folien ersetzen.

Wie wir langsame API-Anfragen auf einer WordPress-Website gefunden und behoben haben
Wie wir langsame API-Anfragen auf einer WordPress-Website gefunden und behoben haben

Wir wählten Vue.js als Frontend-Framework, was es uns ermöglichte, die Benutzeroberfläche der Hauptfunktionalität des Projekts responsiv zu gestalten. Das betrifft die Funktionalität des Editors und die Präsentation von Lektionen. Die Besonderheit der Implementierung lag im Aufbau der Kommunikation zwischen Client und Server in Form von API-Anfragen. Die Anfragen werden aufgrund des Ansatzes zur Verwaltung von Beiträgen im gewählten CMS (WordPress) in großer Anzahl gesendet, sodass eine Reduzierung der Anfragenanzahl nicht möglich war. Parallelisierung und asynchrone Ausführung ermöglichten es jedoch, die gewünschten Leistungsergebnisse zu erzielen.

Server

Die skalierbare Architektur auf Basis von AWS ermöglichte es uns sicherzustellen, dass die Serverkapazität ausreichte, um einen großen Benutzerstrom zu verarbeiten und bei Spitzenlasten eine angemessene Leistung zu gewährleisten. Diesmal erwies sich die Situation jedoch als so unvorhersehbar, dass horizontale und vertikale Skalierung keine besseren Ergebnisse brachten.

Wie wir langsame API-Anfragen auf einer WordPress-Website gefunden und behoben haben

Das Problem finden und beheben

Problems

Die ursprüngliche Problembeschreibung erklärte, dass der entwickelte Frontend-Lektionseditor sowie die Seiten zur Bearbeitung von Einträgen im Administrationsbereich zu lange zum Laden benötigten. Das Erste, was uns in den Sinn kam, war, dass das Admin-Panel in React geschrieben war und API-Anfragen verwendete, um Kategorien, Taxonomien und Tags abzurufen. Unser Lektionseditor verwendete ebenfalls API-Anfragen zum Lesen und Schreiben von Lektionsinhalten.

Nach der Untersuchung des “Netzwerk”-Tabs in den Browser-Entwicklertools stellten wir fest, dass alle asynchronen Anfragen an den Server wie erwartet funktionierten, mit Ausnahme der API-Anfragen, die jeweils mindestens 3 Sekunden dauerten. Eine detaillierte Ansicht der Anfrage zeigte ein hohes TTFB (Time to First Byte), was auf eine Verlangsamung im Backend oder auf der Serverseite hindeutete.

Es wurde empirisch ermittelt, dass unabhängig davon, welche Aktionen der API-Endpunkt ausführte, das Ergebnis immer gleich war – mindestens 3 Sekunden für die Verarbeitung, mit Zunahme der Datenbank auf 5-6 Sekunden ansteigend.

Besonders auffällig war, dass die Produktionsumgebung die langsamste Phase darstellte, da sie die größte Datenmenge enthielt – Beiträge und Metadaten für die Beiträge. Um zu überprüfen, ob die Ladegeschwindigkeit mit zunehmendem Datenvolumen abnahm, wurde die Produktionsdatenbank in einer Testumgebung eingesetzt, wo wir eine Bestätigung dieser Theorie erhielten.

Wie wir langsame API-Anfragen auf einer WordPress-Website gefunden und behoben haben
Image background

Wir stellten uns ständig dieselbe Frage:

Warum wird die Geschwindigkeit einer API-Anfrage, die bei der Verarbeitung interner Logik keine Datenbank verwendet, von der Größe der Datenbank beeinflusst?

Solutions

So wurde beschlossen, die verwendeten Plugins nacheinander zu deaktivieren, um ihren Einfluss auf die Ladegeschwindigkeit zu ermitteln. Das erste Ergebnis kam nach der Deaktivierung des LearnDash-Plugins, dessen Inhalt die Grundlage der gesamten Plattform bildet. Die Verarbeitungsgeschwindigkeit von API-Anfragen war sofort 40-mal schneller! Da jedoch die Möglichkeit, das Plugin aufzugeben und nach Alternativen zu suchen, nicht in Frage kam, wurde die Untersuchung fortgesetzt.

Beim Durchgehen des LearnDash-Plugin-Codes, beginnend mit der Initialisierung und den eingebundenen Dateien, kommentierten wir große Codeblöcke aus und überprüften deren Auswirkung auf die Geschwindigkeit. Besondere Aufmerksamkeit galt der REST-API-Funktionalität, wo der erste Hook auftrat. Durch vollständiges Auskommentieren der REST-API-Nutzung durch das Plugin wurde das Problem behoben. Dies war jedoch ebenfalls keine praktikable Lösung. Im weiteren Verlauf fanden wir schließlich den Grund für dieses Verhalten.

Das LearnDash-Plugin verwendete den WordPress-Hook rest_api_init nicht nur, um eigene API-Endpunkte und Felder zu registrieren, sondern auch, um zusätzliche Controller mit Logik einzubinden, von denen einer eine umfangreiche, nicht optimierte sequenzielle Abfrage aus mehreren Datenbanktabellen enthielt. Daher wurde diese Abfrage unabhängig von der Route-API-Funktion jedes Mal ausgeführt, wenn wir eine API-Anfrage an den Server sendeten (und wie bereits erwähnt, werden viele Anfragen gesendet). Der Grund für diesen Ansatz war unklar, jedoch wurde eine Anfrage zur Klärung an die LearnDash-Plugin-Entwickler gesendet, in der Hoffnung auf eine Lösung in zukünftigen Versionen.

Das Vorhandensein eines Filters im Plugin-Code (bereitgestellt vom LearnDash-Support-Team als Antwort auf unser Ticket) half dabei, die Situation problemlos zu lösen und die Ausgrenzung von mit Logik geladenen Controllern vor dem Laden zu ermöglichen. Genau das haben wir für den problematischen Controller getan.

Results:

Zunächst wurde das Problem mit der langsamen Verarbeitung von API-Anfragen gelöst. Jetzt werden sie sogar schneller geladen als zuvor mit dem minimalen Datensatz. Die Gesamtsteigerung der Ladegeschwindigkeit bei der aktuellen Datenmenge beträgt das 40-Fache!

Dank der Beseitigung des “schweren” Abrufs bei jeder API-Anfrage gelang es uns, die Gesamtlast auf dem Datenbankserver zu reduzieren, was ein netter Bonus war und die aufgewendete Zeit für die Suche nach dem Engpass rechtfertigte.

Basierend auf Informationen des CitrusDev WordPress Team Leads antwortete das LearnDash-Support-Team auf unser Ticket und ein Plugin-Update wurde bereitgestellt. Diese Verbesserungen wurden in den grundlegenden Plugin-Quellcode integriert. Infolgedessen erzielten Nutzer weltweit des LearnDash-Plugins und der WordPress REST API eine erhebliche Geschwindigkeitssteigerung auf ihren Websites. Deshalb ist es so wichtig, WordPress und alle Plugins zeitnah zu aktualisieren.

Wie wir langsame API-Anfragen auf einer WordPress-Website gefunden und behoben haben
Image background

Antwort vom

LearnDash Entwicklerteam

Wir haben dies aktualisiert und planen, die Änderungen im nächsten Hauptrelease zu veröffentlichen.

Danke für Ihr Feedback – das Entwicklerteam hat dies berücksichtigt und eigene Verbesserungen hinzugefügt.

Image background

Wenn Sie möchten, dass unsere Entwickler Ihre WordPress-Website analysieren und
untersuchen
,
können Sie uns jederzeit kontaktieren.

Kontaktieren Sie uns
Bluetooth Mesh in Mobilgeräten: Der vollständige Leitfaden für 2025
10.10.2025

Bluetooth Mesh in Mobilgeräten: Der vollständige Leitfaden für 2025

Bluetooth Mesh in Mobilgeräten: Der vollständige Leitfaden für 2025 Einführung in Bluetooth Mesh Die Bluetooth-Technologie hat die Art und Weise, wie unsere Geräte kommunizieren, grundlegend verändert. Von kabellosen Kopfhörern bis hin zu Smartwatches ermöglicht Bluetooth nahtlose Verbindungen. Doch bei großen Netzwerken – etwa Hunderten von Smart-Leuchten oder IoT-Sensoren – stößt klassisches Bluetooth an seine Grenzen. […]
Read more
So erstellen Sie eine benutzerdefinierte Android-TV-Launcher-App
18.06.2025

So erstellen Sie eine benutzerdefinierte Android-TV-Launcher-App

Mit der wachsenden Beliebtheit von Android-TV-OS-Geräten wird die Entwicklung für diese Plattform immer relevanter. Android TV ist eine Version des Android-Betriebssystems, die speziell für Smart-TVs und Set-Top-Boxen entwickelt wurde und über Google Play Zugang zu Medien und Spielen bietet. Allerdings sind nicht alle Android-Apps automatisch mit Android TV kompatibel, weshalb eine sorgfältige Entwicklung und Optimierung […]
Read more
Jaibaida BMS: Ein umfassender Leitfaden zur Integration mit iOS-Apps
05.11.2024

Jaibaida BMS: Ein umfassender Leitfaden zur Integration mit iOS-Apps

Jaibaida-Batteriemanagementsysteme verstehen Jiabaida BMS (JBD BMS) sind intelligente Geräte zur Überwachung und Verwaltung von Lithium-Ionen-Akkus, insbesondere von Lithiumeisenphosphat-Akkus (LiFePO4). Diese Systeme gewährleisten optimale Akkuleistung, Sicherheit und Langlebigkeit. Wie JBD BMS funktioniert Ein JBD BMS überwacht und steuert in der Regel mehrere wichtige Parameter: Zellenspannung: Stellt sicher, dass einzelne Zellen innerhalb sicherer Spannungsgrenzen bleiben. Zellentemperatur: Verhindert […]
Read more
Dokan Multivendor vs. WCFM Marketplace: Ein umfassender Vergleich
05.09.2024

Dokan Multivendor vs. WCFM Marketplace: Ein umfassender Vergleich

Da die eCommerce-Branche wächst, ist die Erstellung von Multivendor-Marktplätzen zu einem beliebten Weg für Unternehmen geworden, ihr Angebot zu erweitern. WooCommerce, eine der am weitesten anpassbaren Plattformen, bietet mehrere Plugins, mit denen Nutzer Multivendor-Marktplätze einrichten können. Zwei der führenden Kandidaten sind Dokan Multivendor und WCFM Marketplace. In diesem Artikel werden wir die wichtigsten Unterschiede zwischen […]
Read more
Wie man einen zuverlässigen Partner für die Entwicklung eines IoT-Projekts auswählt
12.08.2024

Wie man einen zuverlässigen Partner für die Entwicklung eines IoT-Projekts auswählt

Das Internet der Dinge (IoT) revolutioniert Branchen, indem es Geräte verbindet und intelligentere Entscheidungsfindung ermöglicht. Ob Sie Ihre Geschäftsprozesse innovieren oder neue Einnahmequellen erschließen möchten – ein IoT-Projekt kann ein entscheidender Faktor sein. Der Erfolg Ihrer IoT-Initiative hängt jedoch entscheidend von der Wahl des richtigen Entwicklungspartners ab. Angesichts der Komplexität und Nuancen von IoT-Projekten ist […]
Read more
Arten von IoT-Geräten: Die vernetzte Welt im Wandel
08.07.2024

Arten von IoT-Geräten: Die vernetzte Welt im Wandel

Das Internet der Dinge (IoT) verändert unsere Welt, indem es alltägliche Objekte mit dem Internet verbindet und ihnen ermöglicht, Daten zu senden, zu empfangen und zu verarbeiten. Dieses vernetzte Netzwerk von Geräten erstreckt sich über verschiedene Branchen und steigert Effizienz, Komfort und Produktivität. Hier ist eine Übersicht der verschiedenen Arten von IoT-Geräten und ihrer wichtigen […]
Read more
Image background

Schreiben Sie uns eine Nachricht um zu sehen, wie wir helfen können

Wir brauchen nur ein paar Stunden!

Nicht mehr als 2 Werktage nach Eingang Ihrer Anfrage.