iOS 사용자 정의 NSURLcache 캐시 디스크

iOS 사용자 정의 NSURLcache 캐시 디스크
시스템에 내장된 네트워크 데이터 캐시 처리 메커니즘이 수요를 만족시키지 못할 때, 우리는 맞춤형 캐시 메커니즘이 필요하다
MyURLcache 상속 NSURLcache 사용자 정의
두 가지 방법을 다시 작성합니다.
-(NSCachedURLResponse*) cachedResponseForRequest:(NSURLRequest *)request{
    
    NSString *url = [[request URL] absoluteString];        
        NSString *filename = [self getCacheFileName:url];        
        //     ,         。
        NSCachedURLResponse *cachedResponse = [cachedResponseMap objectForKey:filename];
        if (cachedResponse)
        {
            return cachedResponse;
        }
        
        //     ,         。
        BOOL isCacheExisted = [[NSFileManager defaultManager] fileExistsAtPath:[mCacheDir stringByAppendingPathComponent:filename]];
        if(isCacheExisted)
        {
            NSCachedURLResponse * response = [self loadCacheFromDisk:request localFile:filename];
            if(response != nil)
            {
                NSLog(@"get cache from disk");
                [cachedResponseMap setObject:response forKey:filename];
                return response;
            }
        }
    return [NSURLCache.sharedURLCache cachedResponseForRequest:request];
}
- (void)storeCachedResponse:(NSCachedURLResponse *)cachedResponse forRequest:(NSURLRequest *)request
{
    if (nil != cachedResponse) {
        NSString *url = [[request URL] absoluteString];

            NSLog(@"storeCachedResponse(%@)",url);
            NSString *filename = [self getCacheFileName:url];
            [self storeCacheToDisk:cachedResponse localFile:filename];
            [cachedResponseMap setObject:cachedResponse forKey:filename];
            return;
        }
        [NSURLCache.sharedURLCache storeCachedResponse:cachedResponse forRequest:request];
}

좋은 웹페이지 즐겨찾기