iOS 개발 웹 페이지 - 데이터 캐시

iOS 개발 웹 편-데이터 캐시 1, 같은 URL에 대한 여러 번의 요청, 같은 URL에 여러 번 요청하면 되돌아오는 데이터가 모두 같을 수 있다. 예를 들어 서버의 어떤 그림은 다운로드를 몇 번을 하든 되돌아오는 데이터가 똑같을 수 있다.위의 상황은 다음과 같은 문제를 초래할 수 있다. (1) 사용자 데이터의 낭비(2) 프로그램 응답 속도가 위의 문제를 빨리 해결하지 못하기 때문에 일반적으로 데이터에 대한 캐시를 고려한다.둘째, 캐시는 프로그램의 응답 속도를 높이기 위해 캐시(메모리 캐시\하드디스크 캐시)를 사용하여 처음으로 데이터를 요청할 때 메모리 캐시에 데이터가 없고 하드디스크 캐시에 데이터가 없는 것을 고려할 수 있다.캐시 데이터의 과정은 서버가 데이터를 되돌릴 때 다음과 같은 절차를 밟아야 한다. (1) 서버의 데이터(예를 들어 해석, 표시)를 사용하고(2) 서버의 데이터를 하드디스크(샌드박스)에 캐시하는 경우: 메모리 캐시에 데이터가 있고 하드디스크 캐시에 데이터가 있다.다시 요청한 데이터는 두 가지 상황으로 나뉜다. (1) 프로그램이 닫히지 않고 계속 실행되고 있다면 이때 메모리 캐시에 데이터가 있고 하드디스크 캐시에 데이터가 있다.이때 데이터를 다시 요청하면 메모리 캐시에 있는 데이터를 직접 사용하면 된다(2) 프로그램이 다시 시작하면 메모리 캐시가 사라지고 데이터가 없다. 하드디스크 캐시가 여전히 존재하고 데이터도 있다.이 때 데이터를 다시 요청하려면 메모리에 캐시된 데이터를 읽어야 합니다.알림: 하드디스크 캐시에서 데이터를 읽은 후에 메모리 캐시에 또 데이터가 생겼다. 셋째, 캐시의 실현.설명: GET 요청은 일반적으로 데이터를 조회하는 데 사용되기 때문에 POST 요청은 서버에 대량의 데이터를 보내서 처리한다(변동성이 비교적 크다). 따라서 GET 요청만 캐시하고 POST 요청은 iOS에 캐시하지 않는다. NSURLcache 클래스 캐시 데이터iOS 5 이전: 메모리 캐시만 지원한다.iOS 5부터 시작: 메모리 캐시와 하드 드라이브 캐시를 모두 지원합니다. 2.NSURLcache iOS의 캐시 기술은 NSURLcache 클래스에 사용됩니다.캐시 원리: 하나의 NSURL Request는 하나의 NSCachedURL Response 캐시 기술에 대응한다. 캐시된 데이터를 데이터베이스에 저장한다.3. NSURLcache의 일반적인 사용법 (1) 전역 캐시 대상을 획득(수동으로 만들 필요가 없음) NSURLcache *cache = [NSURLcache sharedURLcache](2) 메모리 캐시의 최대 용량(바이트 단위, 기본 512KB) - (void) setMemoryCapacity: (NSUInteger)memoryCapacity를 설정합니다.(3) 하드디스크 캐시의 최대 용량(바이트 단위, 기본 10M) - (void) setDiskCapacity: (NSUInteger)diskCapacity 설정;(4) 하드디스크 캐시 위치: 샌드박스/Library/Caches(5) 요청한 캐시를 얻습니다- (NSCachedURLResponse*)cachedResponseForRequest: (NSURLRequest*)request;(6) 요청한 캐시 지우기 - (void)removeCachedResponseForRequest: (NSURLRequest*)request;
(7) 모든 캐시 지우기 - (void)removeAllCachedResponses;
4. 캐시 GET 요청이 GET 요청에 대해 데이터 캐시를 하려면 매우 간단합니다. NSMutable URL Request *request = [NSMutable URL Request request WithURL:url].//캐시 정책 request 설정cachePolicy = NSURLRequestReturnCacheDataElseLoad; 캐시 정책을 설정하면 NSURLCAche를 사용하여 데이터 캐시를 자동으로 수행합니다. 5.iOS는 NSURL Request에 대해 7가지 캐시 정책을 제공합니다. (실제로 사용할 수 있는 것은 4가지뿐입니다) NSURL Request UseProtocol CachePolicy//기본 캐시 정책(프로토콜에 따라 다름) NSURL Request Reload Ignoring Local CacheData//캐시를 무시하고 NSURL Request Reload Ignoring Local And Remote CaDatache를 다시 요청합니다//NSURL Request Reload Ignoring CaquestNSURL Request Return Cache Data Else Load//캐시가 있으면 캐시를 사용하고 캐시가 없으면 NSURL Request Return Cache Data Dont Load//캐시가 있으면 캐시를 사용하며 캐시가 없으면 요청을 하지 않습니다. 요청 오류 처리로 (오프라인 모드에 사용) NSURL Request Reload Revalidating Cache Data//구현되지 않았습니다 6.캐시 주의사항 캐시 설정은 구체적인 상황에 따라 고려해야 합니다. 만약에 어떤 URL의 데이터를 되돌려 달라고 요청하면 다음과 같습니다. (1) 자주 업데이트: 캐시를 사용할 수 없습니다!예를 들어 주식, 복권 데이터(2)는 변함없다. 과감한 캐시 사용(3) 간혹 업데이트: 캐시 정책을 정기적으로 변경하거나 캐시 알림을 제거할 수 있다. 캐시를 대량으로 사용하면 쌓일수록 커지므로 캐시를 정기적으로 제거하는 것을 권장한다.
4. 간단한 코드 예시
1 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
 2 {
 3     // 1.    
 4     NSURL *url = [NSURL URLWithString:@"http://127.0.0.1:8080/YYServer/video"];
 5     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
 6     
 7     // 2.      (       ,         )
 8     request.cachePolicy = NSURLRequestReturnCacheDataElseLoad;
 9     
10     // 3.    
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 (      7 ) {
23  //        request.cachePolicy = NSURLRequestReturnCacheDataElseLoad;
24  //    }
25  //          
26  NSURLCache *cache = [NSURLCache sharedURLCache];
27  //    if (    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(@"---          ");
36  } else {
37  NSLog(@"---        ");
38  }
39  */

다음으로 이동:http://www.cnblogs.com/wendingding/p/3950198.html

좋은 웹페이지 즐겨찾기