iOS NSURLConnection & AFNetworking 緩存機(jī)制

//聯(lián)系人:石虎QQ: 1224614774昵稱:嗡嘛呢叭咪哄

一. URL緩存基本概念

NSURLCache 提供了內(nèi)存與磁盤的緩存機(jī)制。

任何通過NSURLConnection 加載的請(qǐng)求都會(huì) NSURLCache 處理踩身,因?yàn)?AFNetworking 使用了NSURLConnection 芍锚,所以也會(huì)被處理挤牛。

當(dāng)完成數(shù)據(jù)的請(qǐng)求后臭家,緩存的相應(yīng)被保存在本地(沙盒目錄為Library/Cache/目錄下,每一個(gè)不同的請(qǐng)求會(huì)生成一個(gè)文件夾房午,保存的文件為NSData文件矿辽。)當(dāng)下一次同樣的請(qǐng)求時(shí),直接從緩存中獲取即可郭厌。

因此網(wǎng)絡(luò)緩存減少了與服務(wù)器的負(fù)擔(dān)袋倔,并提高應(yīng)用程序更好的體驗(yàn)。

二 :設(shè)置NSURLCache

1. 使用URL緩存首先要使NSURLCache進(jìn)行初始化折柠。URL 緩存默認(rèn)大小為Memory4 * 1024 * 1024 btye Disk 20 * 1024 * 1024byts

2. 在首次使用URL換粗之前就初始化NSURLCache宾娜,這樣才能使用URL緩存,因此通常情況下在application: didFinishLaunchingWithOptions--- 初始化扇售,這樣這個(gè)程序所有的NSMutableRequest 都能使用URL緩存前塔。當(dāng)然,你也寫在自己網(wǎng)絡(luò)請(qǐng)求的 單例初始化里

NSURLCache * cache = [[NSURLCachealloc] initWithMemoryCapacity:5 * 1024 * 1024

diskCapacity:25 * 1024 * 1024

diskPath:nil];

[NSURLCachesetSharedURLCache:cache];

三 : 設(shè)置NSMutableURLRequest的requestsetCachePolicy即緩存策略

NSURLRequestUseProtocolCachePolicy= 0,默認(rèn)緩存策略承冰。具體工作:如果一個(gè)NSCachedURLResponse對(duì)于請(qǐng)求并不存在华弓,數(shù)據(jù)將會(huì)從源端獲取。如果請(qǐng)求擁有一個(gè)緩存的響應(yīng)困乒,那么URL加載系統(tǒng)會(huì)檢查這個(gè)響應(yīng)來決定寂屏,如果它指定內(nèi)容必須重新生效的話,將建立一個(gè)連向源端的連接來查看內(nèi)容是否發(fā)生變化。假如內(nèi)容沒有變化凑保,那么響應(yīng)就從本地緩存返回?cái)?shù)據(jù)冈爹。如果內(nèi)容變化了,那么數(shù)據(jù)將從源端獲取欧引。

NSURLRequestReloadIgnoringLocalCacheData = 1,URL應(yīng)該加載源端數(shù)據(jù)频伤,不使用本地緩存數(shù)據(jù)

NSURLRequestReloadIgnoringCacheData =NSURLRequestReloadIgnoringLocalCacheData, 兩個(gè)的設(shè)置相同

NSURLRequestReturnCacheDataElseLoad = 2,指定已存的緩存數(shù)據(jù)應(yīng)該用來響應(yīng)請(qǐng)求,不管它的生命時(shí)長和過期時(shí)間芝此。如果在緩存中沒有已存數(shù)據(jù)來響應(yīng)請(qǐng)求的話憋肖,數(shù)據(jù)從源端加載。

NSURLRequestReturnCacheDataDontLoad = 3,指定已存的緩存數(shù)據(jù)用來滿足請(qǐng)求婚苹,不管生命時(shí)長和過期時(shí)間岸更。如果在緩存中沒有已存數(shù)據(jù)來響應(yīng)URL加載請(qǐng)求的話,不去嘗試從源段加載數(shù)據(jù)膊升,此時(shí)認(rèn)為加載請(qǐng)求失敗怎炊。這個(gè)常量指定了一個(gè)類似于離線模式的行為

NSURLRequestReloadIgnoringLocalAndRemoteCacheData =4,本地緩存數(shù)據(jù)、代理和其他中介都要忽視他們的緩存廓译,直接加載源數(shù)據(jù)

NSURLRequestReloadRevalidatingCacheData = 5指定如果已存的緩存數(shù)據(jù)被提供它的源段確認(rèn)為有效則允許使用緩存數(shù)據(jù)響應(yīng)請(qǐng)求评肆,否則從源段加載數(shù)據(jù)。

只有響應(yīng)http和https的請(qǐng)求會(huì)被緩存非区。ftp和文件協(xié)議當(dāng)被緩存策略允許的時(shí)候嘗試接入源段瓜挽。自定義的NSURLProtocol類能夠保護(hù)緩存,如果它們被選擇使用的話征绸。

示例:

NSMutableURLRequest * request =[NSMutableURLRequest requestWithURL:[NSURLURLWithString:@"http://www.sina.com"]];

[requestsetCachePolicy:NSURLRequestReturnCacheDataDontLoad];

四 :URL緩存的使用

1? 獲取緩存

NSCachedURLResponse * response =[cache cachedResponseForRequest:request];

if (response != nil) {

NSLog(@"有緩存");

[requestsetCachePolicy:NSURLRequestReturnCacheDataDontLoad];

}else{

NSLog(@"沒有緩存");

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末久橙,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子管怠,更是在濱河造成了極大的恐慌淆衷,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渤弛,死亡現(xiàn)場(chǎng)離奇詭異吭敢,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)暮芭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來欲低,“玉大人辕宏,你說我怎么就攤上這事±常” “怎么了瑞筐?”我有些...
    開封第一講書人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長腊瑟。 經(jīng)常有香客問我聚假,道長块蚌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任膘格,我火速辦了婚禮峭范,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘瘪贱。我一直安慰自己纱控,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開白布菜秦。 她就那樣靜靜地躺著甜害,像睡著了一般。 火紅的嫁衣襯著肌膚如雪球昨。 梳的紋絲不亂的頭發(fā)上尔店,一...
    開封第一講書人閱讀 51,604評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音主慰,去河邊找鬼嚣州。 笑死,一個(gè)胖子當(dāng)著我的面吹牛河哑,可吹牛的內(nèi)容都是我干的避诽。 我是一名探鬼主播,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼璃谨,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼沙庐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起佳吞,我...
    開封第一講書人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤拱雏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后底扳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體铸抑,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年衷模,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鹊汛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡阱冶,死狀恐怖刁憋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情木蹬,我是刑警寧澤至耻,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響尘颓,放射性物質(zhì)發(fā)生泄漏走触。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一疤苹、第九天 我趴在偏房一處隱蔽的房頂上張望互广。 院中可真熱鬧,春花似錦痰催、人聲如沸兜辞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽逸吵。三九已至,卻和暖如春缝裁,著一層夾襖步出監(jiān)牢的瞬間扫皱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來泰國打工捷绑, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留韩脑,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓粹污,卻偏偏與公主長得像段多,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子壮吩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355

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