2013-07-13 2 views
-1

내 앱이 JSON 응답을 웹 서버에서 저장하고 너무 많이 요청하지 않도록 NSURLCache를 사용하려고합니다.NSURLCache가 사용되지 않습니다.

요청의 응답 헤더에 Cache-Control:Max-Age=604800을 추가했습니다.

는 다음 코드 내 애플 리케이션의 AppDelegate.m 파일을 추가 한 :

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 

    //set up the URL cache 
    NSURLCache *URLCache = [[NSURLCache alloc] initWithMemoryCapacity:4 * 1024 * 1024 
                 diskCapacity:20 * 1024 * 1024 
                  diskPath:nil]; 
    [NSURLCache setSharedURLCache:URLCache]; 
} 

그리고 코드 내 요청은 다음과 같습니다 있기 때문에, 노력하고 있습니다

NSString *myURLString = [NSString stringWithFormat:@"http://domain.com/api/?location=%@,%@&date=%@&method=%@", latitude, longitude, curDate, methodString]; 

NSLog(@"%@", myURLString); 

NSURL *url = [NSURL URLWithString:myURLString]; 

NSData *jsonData = [NSData dataWithContentsOfURL:url]; 

나는이 생각하지 않습니다 계기 네트워크 프로필로 실행할 때마다보기가로드 될 때마다 네트워크 요청에 스파이크가 표시되고 응용 프로그램을로드하면 아무런 데이터도로드되지 않는 평면 모드로 전환됩니다 (캐시를 사용할 것으로 의심되는 반면).

캐시가 작성/사용되지 않았다는 증거입니까? 그렇다면 누구나 왜 그런 아이디어가 없습니까? 그리고 증명이 아니라면 캐싱을 더 잘 테스트 할 수있는 방법을 아는 사람이 있습니까?

감사합니다.

+2

'dataWithContentsOfURL :'은 원격 URL에 사용하기위한 것이 아닙니다. 이것이 문제의 원인 중 하나 일 수 있습니다. NSURLConnection을 사용하여 분석을 반복하는 것이 좋습니다. – CouchDeveloper

+0

아, 그건 맞는 것 같습니다. 나는 'NSURLConnection'으로 바꿀 것입니다. 감사. – samiles

+0

repost of http://stackoverflow.com/questions/17629214/how-to-test-check-use-of-nsurlcache – vikingosegundo

답변

0

+[NSData dataWithContentsOfURL:]은 어떤 캐싱 모델을 따르는 지 절대적으로 보장하지 않습니다. 실제로는 현재 의도적으로 캐시를 무시합니다.

대신 적절한 캐싱 제어를 제공하는 NSURLConnection을 사용해야합니다.

관련 문제