场景是这样的:安卓客户端要按登录时间在首页显示用户列表,服务端提供数据,每次下拉请求,相当于是从服务端请求加载下一页的的数据,但是这样会有一个问题,假如第一页服务端给了客户端最新的数据,但是在加载第二页之前,又有几个新的用户登录了进来,这样这些新用户就是最新登录的,所以在第二页的时候就会有一些第一页的用户,请教给位大神怎么解决这个问题?
高洛峰2017-04-17 13:27:20
幾個方案:
客戶端去重,優點:實作簡單。缺點:數據不準確。
(推薦)根據時間排序,客戶端獲取下一頁資料時傳回上次最後一條資料的登入時間,資料庫查詢的時候select * from table where 登入時間< 上次最後一條資料的登入時間order by 登入時間。
給每個客戶端記錄一個時間戳,取得第一頁的時候更新這個時間戳,查詢下一頁的時候select * from table where 登入時間< 時間戳order by 登入時間limit 當前頁
ringa_lee2017-04-17 13:27:20
如果用戶順序是不變的,可以每次記錄顯示的最後一個用戶,從服務端獲取到下一頁後,先搜下如果有之前的最後一個用戶,就跳過他以及之前的用戶,為了避免用戶不夠了可能要根據實際情況每次多加載幾個。如果本來應該在第二頁的用戶因為重新登陸而跑到最前邊去了,應該也沒問題吧,一般也不會有人能注意到。