2008-09-17 25 views
1

保持分頁可重複的,如果如果想分頁從支持​​分頁,我們必須去的過程的數據源的結果更改操作執行

  1. 定義頁面大小 - 這就是結果的數量每頁顯示;
  2. 使用offset =頁碼(0 based)*頁面大小
  3. 獲取用戶請求的每個頁面顯示獲取頁面的結果。

所有這一切都很好,沒有考慮到操作可能會影響後臺系統的事實,從而導致分頁發生。我正在談論有人在頁面提取或刪除數據之間插入數據。

page_size = 10; 
get page 0 -> results from 0 to 9; 
user inserts a record that due to the query being executed goes to page 0 - the one just shown; 
get page 1 -> results from 10 to 19 - the first results on the page is the result on the old page 0. 

所描述的行爲可能會導致觀衆混淆。你知道任何實際的解決方案來解決這個問題。

+0

我正要問同樣的問題。最近我在Stackoverflow和Twitter上發現了這個問題。 – Sushant 2008-12-12 07:32:23

回答

1

這裏有幾個學派。

  1. 數據得到更新讓它成爲
  2. 您可以實現某種形式的緩存方法的,將持有的 整個結果集(這可能不是 一個選項,如果有真的 大型數據集)
  3. 你可以做每個頁面操作的比較,並通知用戶 如果總記錄數 改變

0

如果您關心的更新主要是新插入(例如,當通過問題進行分頁並出現新問題時,StackOverflow本身似乎受到此問題的困擾),處理該問題的一種方法是在問題發生時捕獲時間戳第一個分頁查詢,然後將後續頁面的請求結果限制爲在該時間戳之前存在的項目。

0

只要用戶瞭解底層數據總是在變化,他們就不會感到困惑。所以就直接做吧。

您可以緩存結果的前幾頁並將其用於後續視圖,但結果會與數據庫不同步,這更加令人困惑。