web-dev-qa-db-ja.com

リモートAPIデータを取得するための最も高性能な方法は?

私は現在、リモートAPIを介してデータの取得をスピード最適化しようとしています。

私はこのようにそれを使っています:

$response = wp_remote_get('https://some-api.com/endpoint');
$response_body = wp_remote_retrieve_body($response);
$data = json_decode($response_body, true);

これはデータの配列を返します。これをトラバースして適切な変数に保存し、後で変数を挿入したい場所にデータを挿入します。

これはすべてAJAXを介して行われるため、データは動的に挿入されます。

全部で400〜600msかかります。しかし、ブラウザのURLバーにAPI URLを貼り付けてAPIエンドポイントに直接アクセスしようとすると、約50ミリ秒かかります。 json_decode&変数からの保存と他の400-500msへの出力は説明されていますか?ロード時間の影響を最小限に抑えることができる他の方法はありますか?

1
Jernej

リモートAPIデータを取得するための最もパフォーマンスの高い方法は、まったく取得しないことです。したがって、 トランジェントAPI または WPオブジェクトキャッシュ を使用して計算結果を保存します。将来の使用に備えて、後続のリクエストごとに外部API(およびそれ以降の計算)を呼び出さないようにします。さらに、このデータの取得、無効化、再生成はバックグラウンドで行うことができますが、これはより高度な技術であり、現在のアーキテクチャと特定の使用例に大きく依存します。

50msと500msの違いは、

  • あなた自身のajaxエンドポイントに接続する
  • wordPressエンジンの一部を読み込んで実行する
  • 接続し、外部APIエンドポイントにリクエストを送信し、レスポンスを取り戻す(その50ミリ秒、多かれ少なかれ)
  • 応答を解析する
  • カスタム計算ロジック

ほとんどの時間は、最後の2ステップではなく、最初の3ステップに費やされます。あなたは、全体像を見るためにあなたのコードをプロファイルすることができます。

3
Ihor Vorotnov