国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

iOS-ASIHTTPRequest緩存機(jī)制

2019-11-14 18:18:08
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

第三方網(wǎng)絡(luò)請(qǐng)求庫(kù)

* 我們?cè)趯?duì)網(wǎng)絡(luò)請(qǐng)求的時(shí)候,可以使用系統(tǒng)為我們提供的NSURLRequest和NSURLConnection,它基本能實(shí)現(xiàn)我們的基本功能。

* 但是有時(shí)我們使用第三方封裝的庫(kù),可以輕易實(shí)現(xiàn)使用系統(tǒng)方法比較難以實(shí)現(xiàn)的功能。

* 常見的第三方庫(kù)有:ASIHTTPRequest, AFNetworking, MKNetworkKit.

* 關(guān)于第三方庫(kù)基本使用,官網(wǎng)上都有詳細(xì)的介紹。

* 今天就以ASIHTTPRequest為例,實(shí)現(xiàn)數(shù)據(jù)的本地緩存。

 

為什么使用本地緩存?

* 最通俗易懂的解釋就是用戶體驗(yàn)。

* 在沒用網(wǎng)絡(luò)的情況下,可以訪問以前訪問過得數(shù)據(jù)。

* 訪問的數(shù)據(jù),如果緩存中有數(shù)據(jù),不用向服務(wù)器發(fā)送請(qǐng)求,可以節(jié)省用戶的流量。

 

ASIHTTPRequest緩存機(jī)制

這幅圖中的信息是通過網(wǎng)絡(luò)請(qǐng)求獲取的,如果在下次打開這個(gè)APP的時(shí)候沒用網(wǎng)絡(luò),我們還想將上面的數(shù)據(jù)顯示出來(lái),就是得使用緩存機(jī)制,緩存機(jī)制是怎么實(shí)現(xiàn)的呢?

緩存的基本原理:

* 建立一個(gè)緩存區(qū)域,設(shè)置緩存路徑,設(shè)置緩存策略。

* 在網(wǎng)絡(luò)請(qǐng)求的時(shí)候設(shè)置為下載緩存。緩存的數(shù)據(jù)會(huì)存儲(chǔ)到指定位置,我們可以根據(jù)緩存策略讀取緩存數(shù)據(jù)。

注意:

  • 在使用ASIHTTPRequest的時(shí)候,我們首先要將這個(gè)第三方類庫(kù)添加到我們的項(xiàng)目中。 
  • 我們要將相應(yīng)的框架添加到文件中
  • 這個(gè)類庫(kù),不支持ARC,如果你在ARC下,需要設(shè)置相關(guān)信息。打開:target-》Build Phases=>Compile Sources. 雙擊對(duì)應(yīng)的 .m文件。在彈出的框中輸入-fno-objc-arc.

下面的代碼大概意思是:

建立緩存類;設(shè)置緩存路徑;設(shè)置緩存策略(后面詳述);將緩存類賦給一個(gè)屬性;

ASIDownloadCache *cache = [[ASIDownloadCache alloc]init];NSString *documentsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];NSString *filePath = [documentsPath stringByAppendingPathComponent:@"CacheFiled"];[cache setStoragePath:filePath];[cache setDefaultCachePolicy:ASIAskServerIfModifiedCachePolicy |ASIFallbackToCacheIfLoadFailsCachePolicy];[self setMyCache:cache];

 下一步我們就可以發(fā)起請(qǐng)求了:

請(qǐng)求路徑;請(qǐng)求的數(shù)據(jù)設(shè)置緩存;存儲(chǔ)策略(后面講述);發(fā)起請(qǐng)求;獲取請(qǐng)求的數(shù)據(jù);

NSURL *url = [NSURL URLWithString:@"http://apis.juhe.cn/cook/query?key=c84890ed990675f3c454cb2e86fc0a75&menu=%E8%A5%BF%E7%BA%A2%E6%9F%BF&rn=10&pn=3"];ASIHTTPRequest *request = [[ASIHTTPRequest alloc]initWithURL:url];[request setDownloadCache:[self myCache]];[request setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy];[request startSynchronous];NSData *data = request.responseData;

 

緩存策略和存儲(chǔ)策略

緩存策略,存儲(chǔ)策略,見名知意,就是緩存是采取的策略和存儲(chǔ)是采取的策略。

比如使用緩存的時(shí)候,是先讀取緩存,還是先請(qǐng)求網(wǎng)路,還是網(wǎng)絡(luò)讀取失敗后讀取緩存。

存儲(chǔ)策略是采取臨時(shí)性存儲(chǔ),還是永久性存儲(chǔ)。

下面的這張圖記錄了ASI的緩存策略,多種緩存策略可以配合使用,例如上面的代碼的緩存策略就是配合著使用的,先向服務(wù)器請(qǐng)求數(shù)據(jù),失敗后加載本地緩存。

 

關(guān)于存儲(chǔ)策略:大概分為兩種


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 漯河市| 汨罗市| 汶上县| 杭州市| 鄂托克旗| 黄梅县| 梓潼县| 信丰县| 诸城市| 镇巴县| 岳池县| 延津县| 鱼台县| 平江县| 泗水县| 呼图壁县| 青铜峡市| 搜索| 玉门市| 英吉沙县| 三门县| 抚宁县| 湘潭县| 胶州市| 仁怀市| 南溪县| 天气| 托克逊县| 大兴区| 静宁县| 贞丰县| 济宁市| 收藏| 城固县| 三亚市| 霞浦县| 新河县| 通道| 无极县| 彩票| 磴口县|