Google Appengineを使用すると、カーソルを使用してクエリの次のページに移動できます。また、少し努力して前のページに移動することもできます。しかし、スケーラビリティの理由から、n番目のページに移動する良い方法はないと思います。リバースクエリを実行し、n番目のページに移動できる場合、「最後の」ページを実装することは可能ですが、例を見たことがないので、それが機能するかどうかはわかりませんが、マニュアルでは、必要なページまで繰り返すことができるはずです:
だから私が完全なページネーションを実装できない場合は、別の方法でそれを行うことを考えています:
1)無限スクロール(例: Facebookのようにステータスの更新を表示します。 「ページ」はなく、スクロールするだけです。
2)下部にある「もっと見る」というボタンだけ。これを製品カタログに使用しているサイトを見たことがありますが、問題ありませんでした。
「クラシック」ページングの代わりに上記のいずれかを選択することの欠点は何ですか(最初の前の次の1 2 3 4 .... 17 18 29 20最後)
私の場合の仕様では、記事を時間順に(最新のものから)リストし、クレイグリストのクラシファイド広告と同様のアプリでページごとに50の記事をリストします。したがって、時間順に記事を一覧表示し、カーソルを使用して次のページにページを移動できるため、特定の問題に使用できる回避策がある可能性がありますが、それも私が実行できるすべてのことであり、より完全なソリューションを提供したいと考えています。
参照:
https://developers.google.com/appengine/docs/python/ndb/queries#cursors
適切なページネーションソリューションを選択する際に、私は自分自身に質問します。
パフォーマンスの問題がない限り、ページネーション、無限スクロール、コンテンツのフィルタリングとソートのいずれかをユーザーが選択できるようにします。それを考える1つの方法は、負荷に応じて何を配信するかをサーバーに決定させることです。高トラフィックでは、ページネーション/無限スクロールによって配信される各リクエストで10アイテムのみが配信され、フィルタリングが可能になります。これは、クライアント側ですべてを静的に行うのではなく、「応答サーバー」のようなものです。
欠点は、ユーザーが一連のオプションから選択することなく、コンテンツの配信方法をデザイナーが決定することです。個人的には、インライン検索ができないため、どちらの方法も悪いUXだと思います。大きなコンテンツを使用するユーザーは、ページ内を検索する機能を望んでいます。これは、長いコンテンツにページ番号を付ける場合は不可能です。ユーザーがヒットするのを見てきました ctrl + F 次に、入力を開始して、必要なものを正確に見つけます。ページネーションや無限スクロールがあると、このプロセスがはるかに困難になります。
まあ、これはトリッキーです:
ページに番号を付けても、ユーザーが表示したアイテムの数と表示されていないアイテムの残りの数(計算を行った場合)以外の情報はユーザーに提供されません。何でもこれらの数値よりも優れています。
一方、この種のページネーションは非常に人気があります。 EVERYBODYは、その機能と使用方法を知っています。
「無限スクロール」と「さらに読み込む」の欠点は、ユーザーがアイテムがいくつあるかまったくわからないことです。標識は、非常に重要なUXの原則です。