17

특정 폴더 (../../Application Support/Offline)에 NSURLCache를 설정하여 OS에서 임의로 삭제하지 않도록합니다. 그런 다음 NSURLRequestReturnCacheDataElseLoad 정책을 사용하여 NSURLRequest를 보냅니다.NSURLResponse 캐시에서 오는 경우 어떻게 알 수 있습니까?

NSURLConnectionDelegate를 준수하는 클래스에서 처리하는 응답이 캐시 또는 네트워크에서 발생한다고 어떻게 알 수 있습니까? 상태 코드는 당신이 정말로 알 필요가 있다면, 당신은 항목에 확인하실 수 있습니다 (200)

그래서 항상이다 NSHTTPURLResponse에서

http://andrewmarinov.com/ioss-corenetwork-lying/

기본적으로, 여기 문제에 대한

답변

6

좋은 기사 캐시는 요청을하기 전에

NSCachedURLResponse *cachedResponse = [[NSURLCache sharedURLCache] cachedResponseForRequest:request]; 
NSHTTPURLResponse *httpCacheResponse = (NSHTTPURLResponse *)cachedResponse.response; 

그래서 수정 'ETAG'또는 '수정 된 날짜'헤더를 저장하면

NSString* etag = httpCacheResponse.allHeaderFields[@"etag"]; 

그런 다음 응답 핸들러 검사에서 etag 또는 수정 날짜는 동일합니다. 그렇다면 응답은 캐시에서 발생했습니다.

+0

기본적으로 내가 무엇을했는지 – greg3z

+2

당신은 항상 자신의 질문에 대답 할 수 있습니다! 내 인생의 한 시간을 구했을거야 ;-) –