WordPress REST API Langsame Reaktionszeit

Lesezeit: 4 Minuten

Wordpress REST API Langsame Reaktionszeit
Toni

Ich habe ein Problem mit der Geschwindigkeit der WordPress-REST-API. Ich versuche, so schnell wie möglich Daten für einen Bericht über insgesamt 26.000 Datensätze zu erhalten, um dem Benutzer eine flüssige Benutzererfahrung zu bieten. Das Problem, auf das ich stoße, ist, dass WordPress anscheinend Core, Plugins und Themes lädt, wenn die REST-API aufgerufen wird.

Tisch

Mir sind die mir bekannten Möglichkeiten zur Optimierung des Codes ausgegangen. Gibt es einige WordPress-Optimierungen, die jemand kennt, um die Geschwindigkeit zu verbessern? Sind diese Ergebnisse für Benutzer der REST-API normal? Wie Sie sehen können, ist die Zeit zum Ausführen meines Codes nicht das Problem, sondern der WordPress-Overhead.

  • 26.000 Datensätze klingen nach viel. Warum braucht man so viele?

    – Jim Wright

    31. Juli 2017 um 17:34 Uhr

  • Hallo Jim, es ist Teil eines Berichtssystems, das über die Daten eines bestimmten Plugins für mein Unternehmen berichtet. Wir erhalten nicht immer alle 26.000 Datensätze auf einmal und wir haben ein Paging-System eingebaut. Ich habe den 26.000-Datensatz als Hinweis verwendet, um zu zeigen, dass der größte Teil der Zeit, die für die Anfrage benötigt wird, nicht mein Code für die ist Anfrage, sondern ist der Code von WordPress. Selbst wenn ich keine Datensätze erhalte und null zurückgebe, wird die Anforderungszeit immer noch sehr hoch sein, ein schneller Test mit allen aktivierten Plugins und dem auf DIVI eingestellten Thema, ich erhalte eine Antwortzeit von 1130 ms.

    – Toni

    31. Juli 2017 um 17:56 Uhr


  • Soweit ich weiß, durchläuft die REST-API den WordPress-Umschreibungsprozess, weshalb das gesamte Thema und die Plugins geladen werden. In einem Ajax-Aufruf können Sie (‘SHORTINIT’,1) vorher definieren, um wp-load.php einzuschließen, aber mit REST habe ich nie eine ähnliche Option gefunden.

    – Gustav Jantsch

    31. Juli 2017 um 18:11 Uhr

  • Danke für die Hilfe, am Ende habe ich einen Ajax-Call-to-File gemacht, der nur einen Teil des WordPress-Kerns geladen hat

    – Toni

    31. Juli 2017 um 20:53 Uhr

  • Eine andere Sache, die Sie versuchen könnten, ist das Deaktivieren von WordPress WP-Cron: developer.wordpress.org/plugins/cron

    – Flimmer

    20. November 2017 um 8:33 Uhr

Wordpress REST API Langsame Reaktionszeit
Toni

Überblick: Es handelt sich also um eine Einschränkung von WordPress ab Version 4.8. WordPress ist so konzipiert, dass es Plugins und Themes und seinen gesamten Kern bei jeder REST-API-Anfrage lädt. Hier ist der Grund für die langsame Reaktionszeit.

LösungHinweis: Die einzige aktuelle Lösung ist ein Ajax-Aufruf einer Datei in Ihrem Plugin und lädt nur einen Teil des WordPress-Kerns. Der folgende Code ist ein direkter Dateizugriff, während WordPress-Funktionen mit schneller Reaktionszeit weiterhin verwendet werden können.

//Tell WordPress to only load the basics
define('SHORTINIT',1);

//get path of wp-load.php and load it
require_once $_SERVER['DOCUMENT_ROOT'] . '/wp-load.php';

// register global database
global $wpdb;

// return data selected from DB to user

Ergebnisse: Die Reaktionszeiten sind auf 100 ms gesunken. Das ist ein großer Unterschied zu 1069 ms bis 108 ms.

Referenz:
https://deliciousbrains.com/wordpress-rest-api-vs-custom-request-handlers/

Letzte Notizen: Die WordPress-REST-API ist sehr neu, ziemlich leistungsfähig und Sie sollten sie in den meisten Situationen verwenden, in denen die Reaktionszeit kein Problem darstellt.

  • Wo würden Sie das definieren?

    – Tankom

    12. November 2018 um 9:08 Uhr

  • Dies würde in Ihrem Code definiert werden, wenn Sie ein benutzerdefiniertes Plugin erstellen

    – Toni

    13. November 2018 um 0:20 Uhr

  • Was ist, wenn ich kein benutzerdefiniertes Plugin baue? Wissen Sie, wo ich diesen Code hinzufügen soll, um die Antwortzeit der WordPress-API zu verbessern?

    – roter Schuss

    13. November 2018 um 6:30 Uhr


  • @ConanCarroll Dieser Code muss bei der Erstellung einer benutzerdefinierten Datei verwendet werden, von selbst werde ich nichts tun, außer das Nötigste von WordPress zu laden. Sie würden diesen Code in einer benutzerdefinierten PHP-Datei verwenden und dann die globale wpdb verwenden, um alle erforderlichen Zugriffsaufrufe auf die Datenbank durchzuführen, und dann den JSON-Code ausgeben, den Sie benötigen. Es wäre viel schneller, weil es nur das lädt, was Sie laden möchten, aber es ist ein sehr fortschrittlicher und zeitaufwändiger Weg.

    – Chris Morris

    20. November 2018 um 11:32 Uhr

  • Dies umgeht den von WordPress verwendeten REST-Endpunkt. Sie können es nicht registrieren, Sie würden diese Datei direkt aufrufen

    – Toni

    9. März 2019 um 17:14 Uhr


Wenn die Antwortzeit für Ihre App entscheidend ist und es Ihnen nichts ausmacht, Zeit und Mühe aufzuwenden, würde ich empfehlen, einen eigenen Einstiegspunkt zu erstellen, um die benötigten Daten abzurufen. Die Grundlage für diese Methode wird im folgenden Artikel veranschaulicht:
https://medium.com/@yairlevy/wp-rest-api-too-slow-2da859f3cc93

Ich habe das gerade gefunden Plugin -> https://wordpress.org/plugins/wp-rest-cache/

Das ist wirklich Zeitersparnis Plugin und auf unserer Live-Website getestet.

Ergebnisse: 1200ms ging für 50ms Durchschnitt.

1005000cookie-checkWordPress REST API Langsame Reaktionszeit

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy