APP開發(fā)如何高效更新增量數(shù)據(jù)問題,我們以新浪APP為例,在沒有網(wǎng)絡的情況下,新浪微博的App中從別的頁面進入首頁,首頁中已經(jīng)收到的微博還是能顯示,這顯然是把相關的數(shù)據(jù)存儲在App本地,App本地存儲數(shù)據(jù)能減少網(wǎng)絡的流量,同時極大地提高了用戶的體驗(APP開發(fā)愛好者想下大量的數(shù)據(jù)都能在App本地獲取,顯示的速度當然快),使用了App本地存儲后,需要考慮的是數(shù)據(jù)的增量更新方案。
APP開發(fā)什么是數(shù)據(jù)的增量更新?假設用戶A的首頁在數(shù)據(jù)表中是有40條數(shù)據(jù),id為1- 40.App每次通過API獲取l0條數(shù)據(jù)。第一次運行時,App通過API獲取了id為1-10條數(shù)據(jù)同時存儲在App本地。假設用戶離開了這個頁面再回到首頁,這時App需要再次從數(shù)據(jù)庫中獲取數(shù)據(jù),由于之前已經(jīng)有10條數(shù)據(jù)(id為1—10)存儲在App本地了,那么現(xiàn)在需要從數(shù)據(jù)庫中獲取的10條數(shù)據(jù)就是從剩余的30條數(shù)據(jù)(id/Jll-40)中獲取后并保存在App本地。這個就是APP開發(fā)增量更新的典型例子。
增量更新的原理是在數(shù)據(jù)庫中,每條數(shù)據(jù)都必須有update_time這個值,記錄數(shù)據(jù)最后更新的時間,當App從服務器獲取了次數(shù)據(jù)后(返回的數(shù)據(jù)必須按時間排序,update_time最近的在第一條),記錄下所獲取的最新數(shù)據(jù)的update_time,當再次獲取數(shù)據(jù)就只需要獲取update_time到訪問服務器這刻為止所更新的數(shù)據(jù)即可。下面深圳APP開發(fā)程序員舉個簡化的例子詳細說明,首先是一些假設。
1. App每次請求都帶4個參數(shù),如htt p://t est/api/timeline?count:3&page:l&since: liOO&max:1200。
count:每頁的顯示條數(shù)(默認為3)
page:當前頁碼(默認為1)
slnce:時間戳,若指定此參數(shù),則返回時間戳大于等于slnce的結果(應該是上次獲取的最新數(shù)據(jù)的update_time)
max:時間戳,若指定此參數(shù),則返回時間戳少于等于max的結果(應該是發(fā)送時的時間)SQL查詢時使用條件slncei:數(shù)據(jù)的更新時間<:max
2.API返回的數(shù)據(jù)如下。
3 App存儲在本地數(shù)據(jù)中的update_time是指App后臺中這條數(shù)據(jù)的更新時間,不是指App中這條數(shù)據(jù)的更新時間。
現(xiàn)在開始討論。
(1)當App安裝完畢后還沒啟動,App后臺的數(shù)據(jù)表中的數(shù)據(jù)為3條.App存儲的本地數(shù)據(jù)為空
App后臺中數(shù)據(jù)表的數(shù)據(jù)如表3-1所示
App后臺中數(shù)據(jù)表的數(shù)據(jù)如圖表3-2所示
(2)當App第次運行(時間為11: 05),因為是App第次運行,所以slnce為。,max為現(xiàn)在的時司點1105,在App后臺的數(shù)據(jù)表中獲取所有數(shù)據(jù)。
發(fā)送的請求如下。
(3)發(fā)回請求后API數(shù)據(jù)返回如下:
這時App后臺數(shù)據(jù)表中的數(shù)據(jù)如表3-3所示。
App后臺數(shù)據(jù)表中的數(shù)據(jù)如圖表3.4所示
這里是重點①:APlig,回數(shù)據(jù)中的矗ax必須為最后一條數(shù)據(jù)的ripdate—ti=e。
(4)現(xiàn)在的時間是兒=20.用戶點擊了頁面中“獲取更多”的按鈕,App應該從服務器的數(shù)據(jù)表中拉取數(shù)據(jù),在發(fā)送請求前.App后臺的數(shù)據(jù)表數(shù)據(jù)如表3-5所示。
從表3-5可看到,比起上次拉取數(shù)據(jù)(查看表3 1)的時候.App后臺的數(shù)據(jù)表多了idh4,5,6,7的數(shù)據(jù)。這時發(fā)送API請求,這里是重點:
②:當API的返回數(shù)據(jù)size=total時,since值比上次獲取大一點,因為這時數(shù)據(jù)已經(jīng)獲取完整了,沒必要重復獲取上次已經(jīng)獲取的數(shù)據(jù)(記得條件since<:update_time<: max嗎?),所以slnce值設置為1101+1:1102,max為現(xiàn)在的時間點:1120請求的URL如下。
發(fā)送請求后API返回的數(shù)據(jù)和App存儲的本地數(shù)據(jù)如下。
App存儲的本地數(shù)據(jù)如表3-6所示。

本文關于APP數(shù)據(jù)增量高效更新的經(jīng)驗介紹就到這里,在下期深圳APP開發(fā)公司,博納網(wǎng)絡繼續(xù)就本文未完部分分享我們的制作經(jīng)驗。敬請您持續(xù)關注本站。