淺談APP流式分頁服務(wù)端設(shè)計(jì)

1舒帮、傳統(tǒng)Web式分頁

web開發(fā)中常用的分頁方式蒙袍,根據(jù)頁碼進(jìn)行分頁其兴。暫且稱為Web式分頁

傳統(tǒng)Web式分頁

根據(jù)頁碼pageIndex和分頁大小pageSize進(jìn)行分頁骚烧。

-- offset = (pageIndex-1)*pageSize
select * from table limit offset,pageSize;

這種分頁方式浸赫,在web中使用沒有什么太大問題,但是在App分頁中能否套用這種分頁方式呢赃绊?

2既峡、App上拉加載的流式分頁

App流式分頁

App上的分頁方式從表現(xiàn)上看,基本都是上拉加載更多形式的流式分頁碧查。如果后臺(tái)接口仍然按照Web式分頁方式進(jìn)行設(shè)計(jì)运敢,會(huì)有如下問題:
a、數(shù)據(jù)重復(fù)

數(shù)據(jù)重復(fù)

b么夫、數(shù)據(jù)缺失

數(shù)據(jù)缺失

c者冤、offset過大時(shí)查詢效率低
MySQL的limit給分頁帶來了極大的方便,但數(shù)據(jù)量一大的時(shí)候档痪,limit的性能就急劇下降涉枫。
由此可見,傳統(tǒng)Web式分頁接口并不適合App分頁腐螟。

3愿汰、App流式分頁服務(wù)端設(shè)計(jì)

a、cursor游標(biāo)式分頁

select * from table where id >cursor limit pageSize

優(yōu)點(diǎn):
1)乐纸、能夠避免數(shù)據(jù)重復(fù)/遺漏
2)衬廷、limit性能不會(huì)cursor數(shù)值大小影響,性能穩(wěn)定
缺點(diǎn):
1)汽绢、適用于只是按照時(shí)間追加的方式的簡單排序

b吗跋、按照時(shí)間分片緩存
非全量數(shù)據(jù),只是部分熱門數(shù)據(jù),因?yàn)閿?shù)據(jù)變化太快跌宛,可以基于時(shí)間段生成多個(gè)緩存酗宋。對(duì)于數(shù)據(jù)可以按時(shí)間段(5分鐘)生成一個(gè)緩存分片。
具體流程如下:

按時(shí)間分片式緩存流程

此處的timestamp值疆拘,請求第1頁數(shù)據(jù)時(shí)蜕猫,timestamp傳0,服務(wù)端檢查timestamp<=0哎迄,就將當(dāng)前系統(tǒng)時(shí)間賦值給timestamp返回回右,請求第2,3漱挚,...n頁數(shù)據(jù)時(shí)翔烁,將系統(tǒng)返回的timestamp傳入。
緩存的key是根據(jù)timestamp進(jìn)行計(jì)算的旨涝,比如5分鐘一個(gè)分片租漂,key=list_201605231700。

if(timestamp>0){
  // 返回timestamp原值
}else{
  // timestamp=系統(tǒng)時(shí)間
}
分片緩存請求處理過程

應(yīng)用場景

比如簡書首頁熱門颊糜,只是一些熱門文章哩治,排序有一定的復(fù)雜性,且相對(duì)容易變動(dòng)衬鱼。

簡書首頁熱門

目前簡書專題中列表排序是按照點(diǎn)贊數(shù)排序的业筏,分頁請求

http://www.reibang.com/collections/47/notes?order_by=likes_count&page=48
簡書專題頁列表分頁傳參

出現(xiàn)了重復(fù)的數(shù)據(jù),是因?yàn)樵撆判蚴菍?shí)時(shí)數(shù)據(jù)鸟赫,且沒有游標(biāo)蒜胖,無法感知前面加載的數(shù)據(jù)。

c抛蚤、id列表一次性下發(fā)給App

1台谢、請求第一頁數(shù)據(jù)之前先緩存所有id列表
2、請求每頁數(shù)據(jù)時(shí)岁经,只需帶入相關(guān)的id列表參數(shù)

這種方式適用于id列表不會(huì)很大(數(shù)百條數(shù)據(jù))的業(yè)務(wù)場景朋沮,例如騰訊新聞。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末缀壤,一起剝皮案震驚了整個(gè)濱河市樊拓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌塘慕,老刑警劉巖筋夏,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異图呢,居然都是意外死亡条篷,警方通過查閱死者的電腦和手機(jī)骗随,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赴叹,“玉大人蚊锹,你說我怎么就攤上這事≈神” “怎么了?”我有些...
    開封第一講書人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵姚炕,是天一觀的道長摊欠。 經(jīng)常有香客問我,道長柱宦,這世上最難降的妖魔是什么些椒? 我笑而不...
    開封第一講書人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮掸刊,結(jié)果婚禮上免糕,老公的妹妹穿的比我還像新娘。我一直安慰自己忧侧,他們只是感情好石窑,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蚓炬,像睡著了一般松逊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上肯夏,一...
    開封第一講書人閱讀 49,929評(píng)論 1 290
  • 那天经宏,我揣著相機(jī)與錄音,去河邊找鬼驯击。 笑死烁兰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的徊都。 我是一名探鬼主播沪斟,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼暇矫!你這毒婦竟也來了币喧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤袱耽,失蹤者是張志新(化名)和其女友劉穎杀餐,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體朱巨,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡史翘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片琼讽。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡必峰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出钻蹬,到底是詐尸還是另有隱情吼蚁,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布问欠,位于F島的核電站肝匆,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏顺献。R本人自食惡果不足惜旗国,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望注整。 院中可真熱鬧能曾,春花似錦、人聲如沸肿轨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽椒袍。三九已至蚂斤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間槐沼,已是汗流浹背曙蒸。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留岗钩,地道東北人纽窟。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像兼吓,于是被迫代替她去往敵國和親臂港。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理视搏,服務(wù)發(fā)現(xiàn)审孽,斷路器,智...
    卡卡羅2017閱讀 134,637評(píng)論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,837評(píng)論 25 707
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案浑娜? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,737評(píng)論 1 92
  • 大概我永遠(yuǎn)都是極度無味佑力,各種克制 就算心里不是這樣,表達(dá)的表現(xiàn)的卻永遠(yuǎn)都是極度無味筋遭,各種克制
    Damon_Dai閱讀 281評(píng)論 0 0
  • 1打颤、日K線是根據(jù)幣價(jià)(指數(shù))一天的走勢中形成的四個(gè)價(jià)位即:開盤價(jià)暴拄,收盤價(jià),最高價(jià)编饺,最低價(jià)繪制而成的乖篷。 收盤價(jià)高于開...
    鏈聞閱讀 835評(píng)論 0 4