當(dāng)然伤哺,中國(guó)當(dāng)下依然不是有很多流量土豪出現(xiàn)爬橡。
一些理論和資料獻(xiàn)上(多謝這些大牛的奉獻(xiàn)精神):
前提是璧尸,要想好只在前端緩存還是前后端一起配合緩存。以上的幾篇文章已經(jīng)非常明了的介紹了緩存的處理坠狡。
當(dāng)然咽安,首先設(shè)置 NSURLCache
NSURLCache *urlCache = [[NSURLCache alloc] initWithMemoryCapacity:4 * 1024 * 1024 diskCapacity:20 * 1024 * 1024 diskPath:nil];
[NSURLCache setSharedURLCache:urlCache];
其次,最好是能夠配合檢測(cè)網(wǎng)絡(luò)狀態(tài)
我本人覺(jué)得RealReachability這個(gè)庫(kù)要比AFNetWorking本身自帶的網(wǎng)絡(luò)狀態(tài)檢測(cè)庫(kù)要更加好用一些衔掸。而且配置和使用方法在github上說(shuō)的也很詳細(xì)烫幕。
最后,分個(gè)情況搞一搞
- 只考慮單獨(dú)的在客戶端設(shè)置要如何使用敞映。
請(qǐng)求.png
如果你只想簡(jiǎn)單的實(shí)現(xiàn)離線瀏覽在線可更新的需求纬霞,那這一步基本上已經(jīng)可以實(shí)現(xiàn)了。
- 與服務(wù)器搭配驱显。
這種情況常見(jiàn)在第一步已經(jīng)滿足的情況下诗芜,還想在進(jìn)一步優(yōu)化一下瞳抓。那么我覺(jué)得現(xiàn)在cache-control與etag這兩個(gè)角色是時(shí)候可以閃亮登場(chǎng)了。
可以查閱以下文章了解下:
下圖大致說(shuō)明基本流程:
網(wǎng)絡(luò)請(qǐng)求服務(wù).png
#######客戶端處理與注意如下:
- 修改有網(wǎng)絡(luò)時(shí):NSURLRequestCachePolicy為NSURLRequestUseProtocolCachePolicy
- 遇到no-cache的response自然不會(huì)緩存伏恐。
- 保證每次請(qǐng)求都攜帶ETag
1和2兩種情況搭配可以實(shí)現(xiàn)如下功能:
- 有網(wǎng)絡(luò)或者服務(wù)器可請(qǐng)求的情況下孩哑,可以請(qǐng)求服務(wù)器數(shù)據(jù),如遇code:304則表示請(qǐng)求的API數(shù)據(jù)沒(méi)有發(fā)生改變翠桦,減少網(wǎng)絡(luò)傳輸量横蜒,只在數(shù)據(jù)發(fā)生變化的時(shí)候才返回?cái)?shù)據(jù)。
- 無(wú)網(wǎng)絡(luò)或者服務(wù)器不可連接的情況销凑,只瀏覽本地?cái)?shù)據(jù)打到離線閱讀的體驗(yàn)丛晌。
有問(wèn)題的地方,大牛們快來(lái)指正(跪求斗幼。澎蛛。。)