1

クライアントがすでにキャッシュしているものを複製せずに、RESTfulサービスから利用可能なコンテンツの「ランダムな」チャンクを取得することについて質問があります。どうすればRESTfulな方法でこれを行うことができますか?

私は非常に多くのアイテム(テキストとURLを含む小さな記事)を提供しています。/ api /article/のふりをしましょう

私の(ソフトウェア)クライアントは、利用可能なもののランダムなチャンクを取得したいと考えています。それらすべてをクライアントにロードするには多すぎます。彼らは自然な秩序を持っていないので、彼らがただ最新のものを求めることができる状況ではありません。代わりに、クライアントが見たい記事のタイプ(たとえば、人気のある、最近の、トレンドの...)を「ヒント」に与えることができる約6〜10の属性があります。

時間が経つにつれて、クライアントはますます多くのコンテンツを取得しますが、サーバーでは、クライアントがすでに何を持っているかわかりません。また、ランダムに送信されるため、クライアントが持っている「最新の」コンテンツを渡すことはできません。

ローカルに保存されているもののGUIDを送信できると考えられます。クライアントはローカルに50-100のみを保存します。これは、POST変数に詰め込むには十分小さいですが、GETクエリ文字列には詰め込みません。

これを設計するためのクリーンな方法は何ですか?

キーポイント:

  • データには論理的な順序はありません
  • クライアントはコンテンツをローカルにキャッシュする必要があります
  • 各アイテムにはGUIDがあります
  • 重複をプルダウンしないようにしたい
4

1 に答える 1

2

データが本当にランダムな順序で保持されている場合、この作業を十分に行うことはできません(Dilbert RNG効果を念頭に置いてください)。特定のクライアントの順序を修正して、クライアントが適切にページを移動できるようにする必要があります。それは簡単です。その特定の順序をリソース自体にするだけです。その時点で、自然な(場合によっては合成の)順序付けが行われ、通常のページング手法を使用できます。

注意すべき主な点は、最初のクエリを実行するときにGETに応答してリソースを作成することです。おそらく、クエリパラメータのハッシュであるリソース名を使用する必要があります(その場合はクライアントのIDを含む)重要)誰かが同じクエリを2回続けて実行した場合、同じリソースを取得するようにします(したがって、適切なべき等性を維持します)。手動で破棄するのではなく、タイムアウト後にいつでもリソースを削除できます…</ p>

于 2012-10-03T12:25:36.403 に答える