2017-11-03 5 views
0

投稿のフィードを提供するAPIのWebサービスに取り組んでいます。現在、投稿は時系列的に整理されており、本質的にタイムスタンプであるトークンの前後に不透明でページを設定します。しかし、時系列のフィードからアルゴリズム的なフィードに移行したいと考えています。私はポストスコアを計算し、データの最初のページを送信することができますが、私はそれに関連してページ付けする方法がわかりません。私はそれをスナップショットと仮定し、200のソートされたポストIDのようにバンドルし、それらをトークンのHMACブロブにシリアライズしますが、これは各リクエストのための重要なオーバーヘッドです。このようなページネーションを処理するには、より良い方法がありますか?注文が頻繁に更新されるフィードのページを設定するにはどうすればよいですか?

+0

これは実際には特定の要件、アーキテクチャ、UX、受け入れ可能なトレードオフなどに依存します。アイテムの順序が頻繁に変更されると、ページネーションは非常に複雑な見通しになり、ユーザーエクスペリエンスが大きく変わる可能性があります。まず、実装に取り​​組む前に、ユーザーの視点からどのように振る舞うかを正確に判断する必要があります。 – Adrian

答えて

0

ポストスコアをデータベースに格納することができれば、インデックスを作成して高速にアクセスできます。とにかくトップページは速くなります。 order by rating desc limit 50 offset 10000で大きな深度の標準的なアプローチで評価することによってページネーションが必要な場合は遅くなります。ここでは、二次フィールド(タイムスタンプなど)を見つけることができます。同じ配給の記事がいくつかありますが、どれがトップにあるべきですか?このフィールドをソートインデックスに追加し、where rating < ..., timestamp <... order by rating, timestampのようなクエリDBを追加します。

評価を頻繁に再計算する場合は、post_id, ratingのような別のテーブルに保存することをおすすめします。このテーブルをpost_idに照会してください - テーブル全体をすばやく移動して、そこに投稿に参加する必要があります。

関連する問題