私は PHP を使用して WP で作業しており、大量のデータを取得する関数のロード時間を短縮しようとしています。トランジェントは機能すると思い、(以下に示すように) コース クエリをトランジェントでロードしましたが、foreach ステートメントでは機能しません。むしろ、機能させるための正しく設定する方法がわかりません。
すべての速度を低下させる主要なコードは foreach ステートメントです。このステートメントは各トピックの Vimeo ビデオ ID を取得し、vimeo_api() 関数を通じてそれを実行し、ビデオの長さを取得して、それを配列内のトピック ID。
技術的には get_vimeo_duration_all_courses() 関数を使用する必要はありません (すべてのコース/コース/トピックを呼び出します) が、読み込み時に各トピックから Vimeo ID を取得するだけです。これが私が持っている方法です。起動して機能しましたが、残念ながらページの読み込み時間が長くなってしまいました。私の考えは、配列内のすべての再生時間をロードし、各再生時間をトピック ID に追加できれば、ビデオの再生時間を取得するたびに vimeo_api() 関数を呼び出す必要がなくなるということです。 $vimeo 変数を 1 日に 1 回更新し、$vimeo 変数でトピック ID を検索して vimeo の継続時間を取得することもできます。
それでは、自分が正しい方向に進んでいるのか、それとももっと良い方法を知っているのか知りたいと思いますか?
vimeo_api() 関数を毎回実行する必要がないように、$vimeo 変数とその中のすべての値を保存する方法はありますか?
何か助けていただければ幸いです。ありがとう### リーリー
ここで Vimeo API を取得し、ビデオの長さを返しますああああ
WP_Query によって返されたオブジェクトを一時的に保存することは意味がありません。このオブジェクトは、WordPress ループを制御するために使用されます。しかし、
all_video_durations
のようなトランジェントを使用することは非常に意味があります。 Transient は、あらゆる PHP 配列またはオブジェクトのデータを永続化します。トランジェントは、ビデオ サービス API から取得した値など、取得が困難な値をキャッシュするのに最適です。これらはすべての WordPress インストールで動作し、永続オブジェクト キャッシュを使用するインストールではより高速に実行されます。
各ビデオアイテムを一緒にバンドルするのではなく、個別のトランジェントを使用することもできます。これにより、新しいプロジェクトを追加した場合のコードの動作が少し改善されます。
(さらに、cURL の代わりに WordPress の組み込み Request クラスを使用すると、cURL を正しく処理しないホスティング サービス上の WordPress インストールでコードが実行されます。cURL コードを送信すると、プラグイン リポジトリに追加すると、レビュー担当者はそれを置き換えるように要求します。時々、どうしてこれがわかるのか尋ねられます :-)
あなたの提案に感謝します。私が正しい方向に進むのに本当に役立ちました。結局、すべてのクラスを呼び出す関数を削除し、すべての Vimeo ID と期間をホストするキャッシュ ファイルを構築しました。次に、関数を呼び出すと、最初にキャッシュ ファイルが検索され、Vimeo ID が見つかった場合は期間が取得されますが、ID が見つからなかった場合は API が実行されます。
以下は最終的なコードです...
リーリー