3

質問をより適切に構成する方法がわかっている場合は、自由にタイトルを編集してください。(タグ付けも問題です。) この一般的な形式では問題が難しすぎるかもしれないので、具体的な例を考えてみましょう。

ページをリクエストすると、スタックオーバーフローの質問が画面いっぱいに表示され/questions ?sort=newestます。次のページのリンクは につながります/questions?page=2 &sort=newest。サーバー側では、リクエストは LIMIT 句を使用して SQL クエリに変換されると思います。このアプローチの問題点は、ユーザーが最初のページを閲覧している間に新しい質問が追加された場合、2 番目のページが既に見たいくつかの質問で始まることです。(1 ページに 10 個の質問があり、たまたま 10 個の新しい質問が追加された場合、2 回目はまったく同じ内容になります!)

この一般的な問題を解決するエレガントな方法はありますか? 少なくともstackoverflowにとってはそれほど大きな問題ではないことを認識していますが、それでも問題はありません。

(クライアントごとにリクエスト履歴を保存することを除いて)私が持っている最良のアイデアは、/questions?answer_id=NNNフォーマットを使用することです。サーバーは、要求された回答で始まるページを返し、次のページの最初の回答の ID を次のページ リンクに入れます。そのための SQL を記述する方法が必要ですよね?

それは通常どのように行われますか?それとももっと良い方法がありますか?

4

4 に答える 4

1

これは簡単な方法ではできません。たとえば、stackoverflow の「未回答」リストは投票数でソートされています。したがって、表示しているページの最後の ID を (Cookie、リクエスト、セッションなどに) 保存し、ページ 2 を閲覧しているときに誰かが投稿に賛成票を投じた場合、ページ 3 は最近賛成票が投じられたので完了していません。投稿は 1 ページまたは 2 ページに移動された可能性があります。

それを行う唯一の方法は、誰かのセッションで完全なリストをロードすることです。しないでください...

すでに述べたように、人々がこれに慣れていることを願っています。

于 2008-09-30T16:48:56.963 に答える
0

私が見たほとんどの Web サイトでは、この問題は解決されません。それらの Web サイトでは、既に見たコンテンツを含むページが表示されます。

「次へ」をクリックして前に見たコンテンツが表示された場合、それは新しいコンテンツがあるため、もう一度最前線に戻りたいというシグナルです。

于 2008-09-02T01:30:00.080 に答える
0

データベースに入力された時間で各質問にタグを付け、フロントページが Cookie または URL の一部として最後に読み込まれた時間を保持し、先に進むにつれて検索を項目に制限しnますn+displaynum

しかし、私は気にしません。この動作は、ほとんどのユーザーが期待するほど均一であり、新しいデータが利用可能になったときのフラグとして機能します。リストの一番上から始まる新しいタブ/ウィンドウを開いて、何が表示されたかを確認することもできます。

于 2008-09-02T01:30:59.143 に答える
0

SQL(MySQL用)は次のようになると思います:

SELECT * 
FROM   entries 
WHERE  entry_id >= @last_viewed_entry_id 
ORDER BY entry_id 
LIMIT 50
于 2008-09-30T16:00:58.840 に答える