現在、次のような組織でプロジェクトに取り組んでいます。
- クライアント -REST APIを介してメインサーバーからデータを取得します。
- サーバー -サードパーティAPIを介して他のさまざまなサーバーからデータを要求します
- サードパーティ API-サーバーにデータを提供する私の制御できないサービス(Reddit、Hackernews、Quoraなど)
議論のために、クライアントが最初に各サードパーティAPIからのアイテムのリストを必要とするとしましょう。このリストからアイテムが選択されます。この時点で、クライアントはアイテムの完全なコンテンツとアイテムへの応答(コメント)を表示する必要があります。私は3つのオプションの間で決定しようとしています:
アラカルト
このアプローチでは、サーバーに3つのエンドポイントがあります。1つはアイテムのリストを取得し、1つはアイテムのメインコンテンツを取得し、もう1つはアイテムの応答を取得します。
- 長所:必要以上にリクエストを送信することはありません。リクエストは小さくなければならないので、一般的には高速になります。
- 短所:私は多くの要求をしなければなりません。リストから項目を選択した後、ユーザーはメインコンテンツを見る前に待たなければならない場合があり、それから応答を見るためにさらに長く待たなければならない場合があります
サーバー側キャッシュ
このリクエストでは、サーバーを1回呼び出して、すべてのソースのすべてのデータを「フェッチ」します。その後、データはサーバーにキャッシュされます。クライアントは以前と同じRESTエンドポイントを持つことになりますが、サーバーには既にデータがあり、それをクライアントにフィードするだけなので、呼び出しと呼び出しの間にあまり待つ必要はありません。
- 長所:クライアント側での実装は依然として簡単ですが、遅延の問題はありません
- 短所:サーバー側が少し複雑で、最初の呼び出しには本当に長い時間がかかる可能性があります。
クライアント側キャッシュ
このシナリオは前のシナリオと似ていますが、クライアントがサーバーに対して1回だけ要求を行うという点が異なります。つまり、すべてのデータを提供します。ここから、データを保存して適切に使用するのはクライアントの責任です。
- 長所:簡単なサーバー実装、最初の呼び出し後は非常に高速
- 短所:最初の呼び出しは非常に遅く、より複雑なクライアント側の実装になります
どちらが最善のアプローチであるのか、あるいは明らかな解決策が欠けているのかもしれません。どんなアドバイスも大歓迎です!