<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      iOS 開發(fā)網(wǎng)絡(luò)-數(shù)據(jù)緩存

      一、關(guān)于同一個(gè)URL的多次請(qǐng)求

      對(duì)于同一個(gè)URL請(qǐng)求多次,返回的數(shù)據(jù)可能都是一樣的,比如服務(wù)器上的某張照片,無論下載多少次,返回的數(shù)據(jù)都是一樣的

      上面的情況會(huì)造成以下問題

      1.用戶流量的浪費(fèi)

      2.程序響應(yīng)速度不夠快

      對(duì)此,解決上面的問題,一般考慮對(duì)數(shù)據(jù)進(jìn)行緩存。

       

      二、緩存

         為了提高程序的響應(yīng)速度,可以考慮使用緩存(內(nèi)存緩存\硬盤緩存)

      第一次請(qǐng)求數(shù)據(jù)時(shí),內(nèi)存緩存中沒有數(shù)據(jù),硬盤緩存中沒有數(shù)據(jù)

      緩存數(shù)據(jù)的過程

      當(dāng)服務(wù)器返回?cái)?shù)據(jù)時(shí),需要做一下步驟

      1.使用服務(wù)器的數(shù)據(jù)(解析、顯示)

      2.將服務(wù)器的數(shù)據(jù)緩存到硬盤(沙盒)

      此時(shí)緩存的情況是:內(nèi)存緩存中有數(shù)據(jù),硬盤緩存中有數(shù)據(jù)。

      再次請(qǐng)求數(shù)據(jù)分為兩種情況:

      1.如果程序并沒有被關(guān)閉,一直在運(yùn)行

      那么此時(shí)內(nèi)存緩存中有數(shù)據(jù),硬盤緩存中有數(shù)據(jù)。如果此時(shí)在請(qǐng)求數(shù)據(jù),直接使用內(nèi)存緩存中的數(shù)據(jù)即可

      2.如果程序重新啟動(dòng)

       那么此時(shí)內(nèi)存緩存已經(jīng)消失,沒有數(shù)據(jù),硬盤緩存依舊存在,還有數(shù)據(jù)。如果此時(shí)再次請(qǐng)求數(shù)據(jù),需要讀取內(nèi)存中緩存的數(shù)據(jù)。

      (從硬盤緩存中讀取數(shù)據(jù)后,內(nèi)存緩存中又有數(shù)據(jù)啦了)

      三、緩存的實(shí)現(xiàn)

      1.說明:

      由于GET請(qǐng)求一般用來查詢數(shù)據(jù),POST請(qǐng)求一般是發(fā)大量數(shù)據(jù)給服務(wù)器處理(變動(dòng)性比較大) 因此,一般只對(duì)GET請(qǐng)求進(jìn)行緩存,而不對(duì)POST請(qǐng)求進(jìn)行緩存

      在iOS中,可以使用NSURLCache類緩存數(shù)據(jù)

      iOS 5之前:只支持內(nèi)存緩存。從iOS5開始:同時(shí)支持內(nèi)存緩存和硬盤緩存

      2.NSURLCache 

      iOS中的緩存技術(shù)用到了NSURLCache 類

      緩存原理:一個(gè)NSURLRequest對(duì)應(yīng)一個(gè)NSCachedURLResponse

      緩存技術(shù):把緩存的數(shù)據(jù)都保存到數(shù)據(jù)庫(kù)中

      3.NSURLCache 的常見用法

      (1)獲得全局緩存對(duì)象(沒必要手動(dòng)創(chuàng)建)NSURLCache *cache = [NSURLCache sharedURLCache]; 

      (2)設(shè)置內(nèi)存緩存的最大容量(字節(jié)為單位,默認(rèn)為512KB)- (void)setMemoryCapacity:(NSUInteger)memoryCapacity;

      (3)設(shè)置硬盤緩存的最大容量(字節(jié)為單位,默認(rèn)為10M)- (void)setDiskCapacity:(NSUInteger)diskCapacity;

      (4)硬盤緩存的位置:沙盒/Library/Caches

      (5)取得某個(gè)請(qǐng)求的緩存- (NSCachedURLResponse *)cachedResponseForRequest:(NSURLRequest *)request; 

      (6)清除某個(gè)請(qǐng)求的緩存- (void)removeCachedResponseForRequest:(NSURLRequest *)request;

      (7)清除所有的緩存- (void)removeAllCachedResponses;

      4.緩存GET請(qǐng)求

        要想對(duì)某個(gè)GET請(qǐng)求進(jìn)行數(shù)據(jù)緩存,非常簡(jiǎn)單

        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

        // 設(shè)置緩存策略

        request.cachePolicy = NSURLRequestReturnCacheDataElseLoad;

        只要設(shè)置了緩存策略,系統(tǒng)會(huì)自動(dòng)利用NSURLCache進(jìn)行數(shù)據(jù)緩存

       

      5.iOS對(duì)NSURLRequest提供了7種緩存策略:(實(shí)際上能用的只有4種)

      NSURLRequestUseProtocolCachePolicy // 默認(rèn)的緩存策略(取決于協(xié)議)

      NSURLRequestReloadIgnoringLocalCacheData // 忽略緩存,重新請(qǐng)求

      NSURLRequestReloadIgnoringLocalAndRemoteCacheData // 未實(shí)現(xiàn)

      NSURLRequestReloadIgnoringCacheData = NSURLRequestReloadIgnoringLocalCacheData // 忽略緩存,重新請(qǐng)求

      NSURLRequestReturnCacheDataElseLoad// 有緩存就用緩存,沒有緩存就重新請(qǐng)求

      NSURLRequestReturnCacheDataDontLoad// 有緩存就用緩存,沒有緩存就不發(fā)請(qǐng)求,當(dāng)做請(qǐng)求出錯(cuò)處理(用于離線模式)

      NSURLRequestReloadRevalidatingCacheData // 未實(shí)現(xiàn)

       

      6.緩存的注意事項(xiàng)

      緩存的設(shè)置需要根據(jù)具體的情況考慮,如果請(qǐng)求某個(gè)URL的返回?cái)?shù)據(jù):

        (1)經(jīng)常更新:不能用緩存!比如股票、彩票數(shù)據(jù)

        (2)一成不變:果斷用緩存

        (3)偶爾更新:可以定期更改緩存策略 或者 清除緩存

      提示:如果大量使用緩存,會(huì)越積越大,建議定期清除緩存

       - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
       2 {
       3     // 1.創(chuàng)建請(qǐng)求
       4     NSURL *url = [NSURL URLWithString:@"http://127.0.0.1:8080/YYServer/video"];
       5     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
       6     
       7     // 2.設(shè)置緩存策略(有緩存就用緩存,沒有緩存就重新請(qǐng)求)
       8     request.cachePolicy = NSURLRequestReturnCacheDataElseLoad;
       9     
      10     // 3.發(fā)送請(qǐng)求
      11     [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
      12         if (data) {
      13             NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
      14             
      15             NSLog(@"%@", dict);
      16         }
      17     }];
      18 }
      19 
      20 /**
      21  // 定期處理緩存
      22  //    if (緩存沒有達(dá)到7天) {
      23  //        request.cachePolicy = NSURLRequestReturnCacheDataElseLoad;
      24  //    }
      25  // 獲得全局的緩存對(duì)象
      26  NSURLCache *cache = [NSURLCache sharedURLCache];
      27  //    if (緩存達(dá)到7天) {
      28  //        [cache removeCachedResponseForRequest:request];
      29  //    }
      30  
      31  // lastCacheDate = 2014-06-30 11:04:30
      32  
      33  NSCachedURLResponse *response = [cache cachedResponseForRequest:request];
      34  if (response) {
      35  NSLog(@"---這個(gè)請(qǐng)求已經(jīng)存在緩存");
      36  } else {
      37  NSLog(@"---這個(gè)請(qǐng)求沒有緩存");
      38  }
      39  */
      posted on 2019-02-26 16:42  強(qiáng)者VS弱者  閱讀(180)  評(píng)論(0)    收藏  舉報(bào)

      主站蜘蛛池模板: 国产一区二区精品久久凹凸| 国产睡熟迷奷系列网站| 九九热精品在线视频观看| 综合人妻久久一区二区精品| 国产av一区二区午夜福利| 国产性色的免费视频网站| 国产口爆吞精在线视频2020版| 中文字幕人妻不卡精品| 99热在线观看| 男人的天堂va在线无码| 亚洲精品自拍视频在线看| mm1313亚洲国产精品| 亚洲精品日韩在线观看| 日韩中文字幕综合第二页| 久久91精品牛牛| 4hu44四虎www在线影院麻豆| 日本一区二区三区四区黄色| 精品国产品香蕉在线| 万盛区| 久久精品女人的天堂av| 欧美人妻在线一区二区| 一边添奶一边添p好爽视频| 国产电影无码午夜在线播放| 亚洲精品无码日韩国产不卡av| 国产亚洲精品久久久久婷婷瑜伽 | 99热在线观看| 一区二区三区在线色视频| 亚洲av男人电影天堂热app| 日本无遮挡吸乳视频| 国产最大的福利精品自拍| 色猫咪av在线网址| 国产真实野战在线视频| 内射囯产旡码丰满少妇| 男人扒女人添高潮视频| 国产亚洲色婷婷久久99精品| 国产精品 亚洲一区二区三区| 色偷偷天堂av狠狠狠在| 最近高清中文在线字幕在线观看 | 极品无码国模国产在线观看| 亚洲av乱码久久亚洲精品| 99在线小视频|