2017-12-16 17 views
1

外部ソース(Steam)からWeb APIを使用することには小さな問題があります。 APIへの複数の呼び出しを行い、その結果を取得する必要があります。これにより、アプリケーションが非常に遅くなり、アプリケーションが長時間読み込まれてしまいます。外部ソースからの低速Web APIの処理方法

私は自分のアプリケーションにLaravelを使用しています。私は、結果をキャッシュし、次のページのロード時に表示されるバックグラウンドで新しいフェッチ中にキャッシュされた(古い)結果をユーザーに表示することを考えました。この問題は、データを何らかの形で取得する必要があるため、初めてページの読み込み速度を上げる方法です。

それ以外は、自分のパフォーマンスをどのように向上させるかという手がかりがありません。任意の提案をいただければ幸いです!

答えて

2

この問題には多くの方法がありますが、目的が初期ページの読み込み速度を上げることになっている場合は、すべてのソリューションでアプリケーションを非同期にすることになります。

第三者のサービスが応答するのを待つのではなく、dispatch a jobでデータを取得します。 your cacheの失効したデータで応答することができます。キャッシュにデータがない場合は、ユーザーに読み込みメッセージを表示するか、ジョブを同期的にディスパッチできます。これにより読み込み時間が長くなります。

クライアント側では、クライアントにデータをプッシュするには、新しいデータをポーリングするか、use a websocketをポーリングする必要があります。 websocketのアプローチはセットアップが難しくなりますが、アプリケーションへのリクエストが少なくなり、エンドユーザの応答が速くなります。


特定のユースケースに応じて、このアプローチをさらに最適化することができます。たとえば、サードパーティのサービスから常に同じデータセットをフェッチしている場合は、キャッシュからデータを提供し、cron jobを使用してキャッシュを更新することができます。これが実行可能なソリューションであれば、ジョブのディスパッチやクライアントの非同期更新を心配する必要はありません。

+0

私はキャッシュを更新するcronjobのアイデアが好きです。大きな問題は、1つの検索パラメータだけでなく、APIから利用可能なすべての行のデータが必要なことです。サーバーが何百万行もキャッシュにバックグラウンドで格納できるようにすることは、非常に賢明な方法ではないと思います。 –

+0

@ P.Nick私は同意する、その解決策は問題のサブセットのためにのみ動作します。 –

+0

答えがありがとう、それはdefinetely有用です。 –

関連する問題