2013-09-06 2 views
0

AfNetworking을 사용하고 있습니다. 새 데이터를 호출하지만 캐싱 된 결과가 계속 나타납니다. 따라서 VC를 통해 데이터를 보여주고 루트로 다시 이동하여 서버의 데이터를 변경하면 30 초 정도 기다린 후 VC로 다시 밀어 넣으면 이전 데이터가 표시됩니다. 브라우저에서 URL을 누르면 올바른 데이터가 표시됩니다. 앱을 다시 실행하면 데이터가 변경된 것을 볼 수 있습니다.NSURLRequest : NSCachedURLResponse를 항상 가져 오는 중입니다.

내 서버에서 내 응답은 캐시 제어 헤더를 다시 보냅니다 캐시 제어 : 공공 최대 연령 = 10,

을에서 내가 말할 수있는 것은 내가 항상 항상 다시 NSCachedURLResponse를 얻을 수 있다는 것입니다 캐시가 아니라고 내 캐시 제어 정책을 듣고. 내가 된 URLRequest 설정 방법

NSURLCache *URLCache = [[NSURLCache alloc] initWithMemoryCapacity:8 * 1024 * 1024 diskCapacity:8 * 1024 * 1024 diskPath:nil]; 
[NSURLCache setSharedURLCache:URLCache]; 

:

NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:30.0]; 

내가 아무것도 NSURLCache을 포함 할 없습니다 내 AppDelegate에에서

나는 나의 SharedURLCache을 설정합니다.

아이디어가 있으십니까?

BooRanger

답변

0

당신이 설명하는 동작은 당신이 게시 한 코드에서 기대할 수 정확히이다. NSURLRequestUseProtocolCachePolicy 대신 NSURLRequestReloadIgnoringLocalAndRemoteCacheData을 사용해 보셨습니까? thisNSURLRequestUseProtocolCachePolicy 수단에 따르면

는 프로토콜 구현에 정의 된 캐싱 로직이있는 경우, 특정 URL로드 요청에 사용하도록 지정합니다. URL로드 요청의 기본 정책입니다. 당신은 항상 서버에서로드 할 경우

그래서, 당신과 같이 설명 NSURLRequestReloadIgnoringLocalAndRemoteCacheData 사용해야합니다

는 로컬 캐시 데이터는 무시해야하지 않도록 지정하지만, 을하는 프록시와 다른 중간체는 프로토콜이 허용하는 한도 내에서 캐시를 무시하도록 지시해야한다.

+0

나는 NSURLRequestUseProtocolCachePolicy를 설정하면 내 헤더 필드 "캐시 제어"를 사용하여 캐시를 설정한다는 인상하에있었습니다. – BooRanger

+0

NSURLRequestReloadIgnoringLocalAndRemoteCacheData가 작동하지 않는 것 같습니다. 어쩌면 다른 곳에서 뭔가를 잃어 버릴 수도 있습니다 ... 건배 – BooRanger

+0

10 초 이상 지났습니까? – ipmcc