更新:以下のアドバイスに従い、アプリに Memcached 層を実装することにしました。今、私は別の考えを持っています。Memcached をチェックし、Memcached の有効期限が切れたときに更新するポーリング (5 分または 10 分ごとなど) で AJAX 要求を実行することは可能ですか? この方法では、バックグラウンドでサイレントに実行されるため、エンド ユーザーが遅延を経験することはありません。
Directed Edge の REST API を使用して、Web アプリでレコメンデーションを行っています。私が直面している問題は、サイト全体の複数の場所でかなりの数の推奨事項をクエリすることです。待ち時間が非常に長く、クエリごとにページが 2 ~ 5 秒程度読み込まれます。ひどいですね。
Directed Edge の PHP バインディングは使用していません。代わりに、自分で作成した PHP バインディングをいくつか使用しています。バインディングは GitHub で確認できます。cURL を使用して API に接続しています。
受信したデータをキャッシュするにはどうすればよいですか? 実装がかなり簡単で、かなり柔軟である限り、メソッドの数に制限はありません。
レコメンデーションを取得するためのクライアント コードの例を次に示します。
$de = new DirectedEdgeRest();
$item = "user".$uid;
$limit = 100;
$tags = "goal";
$recommendedGoals = $de->getRecommended($item, $tags, $limit);