2017-07-27 1 views
0

私は10kの結果の配列を返すエンドポイントを持っているとしましょう。私はそれらをページが含まれたテーブルに表示したい。 UXを検討する最善の方法は何ですか?API - ページネーションとUXの結果を取得する

  1. 私は2番目のオプションが遅いことを知っているが、それは防ぎ一度にすべてを取得し、
  2. 、ページのユーザーが訪問しているため、結果を取得して表示し、再フェッチすべて

ページ付け複数回フェッチする。 あなたはどちらと一緒に行くのですか?

PSこれはSOの規制に関してはおそらく大きな疑問ではありませんが、実際のアプリケーションではほとんど経験がなく、その仕組みが分かりたかったのです。

+0

10kの結果は、情報収集に必要な実際のワークロードや各結果のデータ量を表していません。 ページの情報を収集するための負荷が重い場合は、現実世界の誰もそれをすべてクライアントにダウンロードすることはありません。できるだけキャッシュを使用してください。 –

+0

@DimaVinogradov 10k結果。それぞれは、 'id'、' title'、 'description'を持つ単純なオブジェクトです。全体の応答サイズは約900kbです。 – Ancinek

+1

これは十分な情報が得られない場合は1-2ページのページを前後にページします - フィルタは のボトムラインに適用し、ページを区切り、1ページにつき1ページだけを取得します –

答えて

1

確かに、それはSOのregsに関しては最高の質問ではないという点で正しいですが、私はそれが有効なものだと感じています。

必要なアイテムは一度にロードする必要があります。各リクエストは結果を取得するために使用されます。 1ページあたり25件の例:最初は結果0〜25を取得し、次に2ページをクリックすると結果25〜50などを取得します。

+0

そして、 50個のオブジェクトのような小さな配列ですが、それは大きくなることがあります。私はページごとに10をフェッチすることに決めましたが、私のページ区切りバーは最大9ページのページ番号に収まることができます。どのくらい私はそこに収まるべきであるか私はどのように知るでしょうか? – Ancinek

+0

あなたは必要なページ数を計算するために簡単な和算をします:(javascriptで 'let pagesCount = Math.ceil(resultsCount/perPage)') – Stuart

+0

はい、すべてのデータを取得して数える必要があります。ページごとにそれらをフェッチする必要はありません。 – Ancinek

1

10k結果を一度に読み込まないでください。いくつかのアイテムには制限があります(最大10、20、50 ...まで)。 APIをチェックすると、limitというURLパラメータがあり、startと呼ばれるものがありますか? 「はい」の場合は、必要な結果の数と開始位置を定義できます。したがって、APIにページネーションを送信し、ポジション100の結果を50件だけリクエストすることができます。

+0

はい、このエンドポイントには 'offset'と' limit'フィルタがあります。私はユーザーがページをクリックするたびにフェッチするつもりです。 – Ancinek

関連する問題