查詢一下網(wǎng)絡(luò)請求贝搁,你會發(fā)現(xiàn)這種漓拾,是不是真的這么簡單倔韭?可以參考一下
http://www.cocoachina.com/ios/20161107/17981.html?utm_source=tuicool&utm_medium=referral
我理解的正如評論所說的贝奇,post無法。
這個(gè)每個(gè)公司是不一樣睡雇,不過感覺都喜歡post萌衬,畢竟稍微安全點(diǎn)。
so它抱,自帶緩存可能不一定合適秕豫。最流行的流行afn和yycache組合,yycache內(nèi)存和硬盤緩存會比較快观蓄。
現(xiàn)在剩下思路:
什么需要緩存混移?(這部分只說網(wǎng)絡(luò)緩存祠墅,用戶數(shù)據(jù)緩存的話,可以是歸檔沫屡、數(shù)據(jù)庫等)
何時(shí)更新饵隙?
最最重要的是要根據(jù)現(xiàn)有項(xiàng)目情況來做出相應(yīng)的修改撮珠。
什么需要緩存沮脖。
一般請求分成二種,一種是展示(不一定緩存芯急,按需求)勺届,一種是修改,修改結(jié)果的接口我們不需要緩存(修改都是post)娶耍,我們需要緩存的是展示的網(wǎng)絡(luò)請求免姿。這部分當(dāng)然還需要區(qū)分,區(qū)分的依據(jù)是更新機(jī)制榕酒,如果你每次請求都更新的話胚膊,緩存就是為了用戶體驗(yàn)(防止用戶網(wǎng)卡)。如果你是根據(jù)后臺某個(gè)通知機(jī)制去更新想鹰,那就是一些不太常改變的數(shù)據(jù)緩存紊婉。我們可以封裝相應(yīng)的api請求接口,根據(jù)需求情況相應(yīng)改變辑舷。
那么現(xiàn)有問題又是如何去更新喻犁?
1.每次api接口請求時(shí)更新;
2.根據(jù)某個(gè)消息通知更新何缓。(app存在多端操作肢础,以及上級可以修改下級狀態(tài))
github上會有幾個(gè)afn和yycache封裝的緩存庫
我選擇了PPNetworkHelper。
大致思路碌廓,可以看下方法回調(diào)传轰,如果需要緩存的話,去內(nèi)存緩存(優(yōu)先內(nèi)存緩存谷婆,沒有硬盤緩存)查找慨蛙,有就先返回緩存,沒有的話波材,返回nil股淡,當(dāng)網(wǎng)絡(luò)請求有返回時(shí),根據(jù)返回廷区,返回成功或者失敗數(shù)據(jù)唯灵。如成功,緩存請求成功的數(shù)據(jù)隙轻。
項(xiàng)目情況(原網(wǎng)絡(luò)框架埠帕,afn封了一成)
項(xiàng)目暫無一個(gè)很好的更新機(jī)制垢揩,且一個(gè)用戶相應(yīng)身份權(quán)限都基礎(chǔ)數(shù)據(jù)需要大致5-8個(gè)接口(這部分緩存是希望體驗(yàn)好點(diǎn),app內(nèi)信息查詢根據(jù)令另外的數(shù)據(jù)緩存)敛瓷,同時(shí)由于無法判斷身份(后期app端不判斷叁巨,接口判斷能否正常調(diào)用)以前版本需要實(shí)時(shí)判斷,體檢較差呐籽。
展示頁面锋勺,根據(jù)返回顯示
列表頁面,根據(jù)返回顯示狡蝶,同時(shí)支持返回庶橱,搜索(網(wǎng)絡(luò)請求)
修改方案:(在ppnetworkhelper上封裝一層,ydnetworkhelper贪惹,然后原網(wǎng)絡(luò)框架套在ydneiworkhelper上)
修改思路:需要緩存的數(shù)據(jù)苏章,每次接口請求,優(yōu)先加載緩存(如有)奏瞬,再返回網(wǎng)絡(luò)數(shù)據(jù)枫绅。
單純的無列表展示頁面就這樣。
然后當(dāng)碰到列表頁面的時(shí)候硼端,就有問題了并淋。
列表翻頁時(shí)是要模型加到數(shù)據(jù),如果返回二次的話显蝌,數(shù)據(jù)就不對了预伺。所以我們自己的ydnetworkhelper上最好把緩存和成功(正常),以及緩存和失斅稹(這部分依照自己意愿酬诀,失敗情況,網(wǎng)絡(luò)慢骆撇,身份等等)的寫在二個(gè)block上瞒御,而不是分開的三個(gè)block。
在相應(yīng)的控制器或者presenter上去修改神郊。
1.有緩存肴裙,無網(wǎng)絡(luò)請求
2.無緩存,有網(wǎng)絡(luò)請求
3.有緩存涌乳,有網(wǎng)絡(luò)請求
4.無緩存蜻懦,無網(wǎng)絡(luò)請求(忽略)
無緩存時(shí),執(zhí)行:--->2 2執(zhí)行加到數(shù)組夕晓,刷新列表
有緩存時(shí)宛乃,執(zhí)行:1--->3 2執(zhí)行加到數(shù)組,刷新列表 3執(zhí)行刪除緩存加到數(shù)據(jù)的個(gè)數(shù),同時(shí)把網(wǎng)絡(luò)請求數(shù)據(jù)的模型加到數(shù)組刷新征炼。
本來考慮了線程析既,如果網(wǎng)絡(luò)比較好的話,可以把1這步取消谆奥,后來發(fā)現(xiàn)刪除是按數(shù)據(jù)個(gè)數(shù)的眼坏,如果加了線程可取消的話,還需要其他判斷酸些,同時(shí)無法定義網(wǎng)絡(luò)好壞宰译,因?yàn)楸┞督o了p或者c,代碼量就比較多擂仍,同時(shí)囤屹,一般一頁只設(shè)置了10到20個(gè)數(shù)據(jù),暫放棄逢渔。
以上僅測試階段,工作量較大乡括,慢慢修改肃廓。