2017-07-31 284 views
4

私はWordPress REST APIの速度に問題があります。私がしようとしているのは、ユーザーに流動的なユーザーエクスペリエンスを与えるために、できるだけ速く合計26kレコードのレポートのデータを取得することです。私が実行している問題は、REST APIが呼び出されたときにWordPressがコア、プラグイン、およびテーマを読み込むように見えることです。Wordpress REST API遅い応答時間

Table

私は、コードを最適化するために、私が知っている方法を実行した誰もがスピードを向上させるために知っているいくつかのワードプレスの調整はありますか?これらの結果は、REST APIを使用するユーザーにとっては正常ですか?ご覧のとおり、コードを実行する時間は問題ではありませんが、WordPressのオーバーヘッドは問題ありません。

+0

26kレコードは多くのように聞こえる。なぜあなたはそれをたくさん必要としますか? –

+0

こんにちは、私の会社の特定のプラグインのデータを報告する報告システムの一部です。すべての26kレコードを一度に取得するのではなく、ページングシステムを組み込んでいます。26kレコードをポイントとして使用して、リクエストの時間の大部分が私のコードではないことを示しました。 WordPressのコードです。レコードを取得せずにnullを返す場合でも、要求時間はまだ非常に長く、すべてのプラグインが有効になっていて、DIVIに設定されているテーマは1130msの応答時間になっています。 – Tony

+0

私が知る限り、REST APIはWordpressの書き換えプロセスを経て、テーマとプラグイン全体が読み込まれる理由です。 Ajaxの呼び出しでは、wp-load.phpをインクルードする前に( 'SHORTINIT'、1)を定義できますが、RESTではこれと似たオプションは見つかりませんでした。 –

答えて

5

概要:問題はWordPressのバージョン4.8以降の制限です。 WordPressは、プラグインとテーマ、およびすべてのREST APIリクエストの中核をロードするように設計されています。応答時間が遅い理由は次のとおりです。

解決策:現時点での唯一の解決策は、プラグインのファイルへのajax呼び出しで、WordPressコアの一部だけを読み込みます。以下のコードは直接ファイルにアクセスしながら、応答時間の速いWordPress関数を使用することができます。

//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 

結果:応答時間が100msのダウンにしています。それは1069msから108msまでの大きな違いです。

リファレンスhttps://deliciousbrains.com/wordpress-rest-api-vs-custom-request-handlers/

最終ノート: WordpressのREST APIは、非常に強力非常に新しいですし、応答時間は問題ではありませんほとんどの状況で使用する必要があります。

関連する問題