瀑布流(無限翻頁)帶來的問題

比起傳統翻頁,瀑布流式翻頁如今愈來愈火。來看一下區別sql

1. 傳統翻頁:post

    每次翻頁都會從新渲染一個全新的頁面,如論壇。blog

    問題:當你翻頁時,可能會發現,哎這帖子我剛纔在上一頁看過啊,這是很正常的,由於帖子通常是按最後一個回覆的時間排序的。排序

    解決方法: 無,傳統分頁就這樣。class

2. 瀑布流:渲染

    每次翻頁,會把下一頁的數據追加到當前頁面。分頁

    問題: 若是翻頁時數據發生變更,將會在同一個頁面出現重複數據,想一下前面說的論壇的場景。方法

    解決方法:im

         1. 客戶端去重數據

             客戶端記錄以前加載的數據,在得到新數據後,客戶端去重。

             缺點: 去重後數據會少,好比新數據得到10條,其中有2條重複的,最後只加載了8條,且順序沒法保證。

             優勢: 服務端代碼不用改動。

         2. 修改分頁邏輯

             如朋友圈,其是按朋友圈的發佈時間排序的,且發佈時間永遠不可變。所以只需取當前頁面最後一條發佈時間的下10條數據便可。

             即將

SELECT * FROM posts WHERE username='licong' LIMIT 10

             修改成

SELECT * FROM posts WHERE username='licong' AND publish_time > :time LIMIT 10

         優勢: 簡單,有效

             缺點: 限制極爲苛刻,數據必須按照一個固定不變的屬性排序,好比前面說的發佈時間。試想論壇這個場景,帖子最後頂帖時間是可變的,若是用這個邏輯去作,會致使有一些帖子永遠不可見。

相關文章
相關標籤/搜索