* 我們?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é)省用戶的流量。
這幅圖中的信息是通過網(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ù)。
注意:
下面的代碼大概意思是:
建立緩存類;設(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ǔ)是采取的策略。
比如使用緩存的時(shí)候,是先讀取緩存,還是先請(qǐng)求網(wǎng)路,還是網(wǎng)絡(luò)讀取失敗后讀取緩存。
存儲(chǔ)策略是采取臨時(shí)性存儲(chǔ),還是永久性存儲(chǔ)。
下面的這張圖記錄了ASI的緩存策略,多種緩存策略可以配合使用,例如上面的代碼的緩存策略就是配合著使用的,先向服務(wù)器請(qǐng)求數(shù)據(jù),失敗后加載本地緩存。
關(guān)于存儲(chǔ)策略:大概分為兩種
|
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注