2010-02-03 3 views
3

사용자 지정 URL 캐시 작성을 고려했지만 NSURLCache가 디스크 캐시를 지원하는 것으로 보입니다. 리소스가 부실 될 때까지 (서버에서 다시 보내는 헤더에 의해 결정된) 내 아이폰 앱에서 캐시 된 응답을 사용하도록하고 싶습니다.강제로 NSURLConnection을 캐시에서로드 할 수 있습니까?

NSURLConnection으로 멋진 것을 불러야합니까? 아이폰에 캐시 된 버전의 URL을 사용하게하려면 어떻게해야합니까?

업데이트 : 여기 내 코드에 대한 링크입니다

http://pastie.org/808549

+0

'cachedResponseForRequest'와'storeCachedResponse'를 수동으로 호출해야합니까? –

답변

1

대답은 유감스럽게도 iPhone이 NSURLCache로 디스크 캐싱을 수행 할 수 없기 때문에 내가 설명한 시나리오에 적합하지 않습니다.

나는 자신의 수업을 진행하고 있습니다.

+0

이것은 iOS4에서 여전히 사실입니까? – steipete

+0

iPhone이 메모리 캐싱을 지원합니까? 실제로 당신이 링크에 게시하지만 델리게이트 - (NSCachedURLResponse *) 연결 : (NSURLConnection *) 연결 willCacheResponse : (NSCachedURLResponse *) cachedResponse 내 경우에는 실행에 동일한 코드를 구현 :( – iphonedev23

5

난 당신이 NSURLRequest에 "cachePolicy"를 추가해야 할 수 있습니다 생각 :

NSURLRequestReturnCacheDataElseLoad 캐시 정책에 따라 URL 로딩 시스템에서 캐시 된 데이터를 사용합니다. 해당 기간 또는 만료 날짜를 무시합니다. 이 있으면 해당 데이터를 에서로드합니다. 이 캐시 된 버전이 아닌 경우에만 원본 소스를로드하십시오.

http://developer.apple.com/mac/library/DOCUMENTATION/Cocoa/Conceptual/URLLoadingSystem/Concepts/CachePolicies.html#//apple_ref/doc/uid/20001843

가 몇 가지 정책이있다. 아마도 그들 중 하나가 도움이 될 것입니다.

+0

기본 정책이 작동해야합니다. 문제는 캐시에서로드하는지 여부가 아니라 캐시에 저장하지 않는 것입니다. 감사. 나는 그것들 중 몇 가지를 시도 할 것이다. –

+0

아무것도하지 않는 것 같아요. 그것은 내 자신을 작성해야 할 수도 있습니다 같습니다 : ( –

+0

그냥 다른 곳을 찾고있는 동안이 샘플 코드를 발견 : http://developer.apple.com/iphone/library/samplecode/URLCache/index.html – typeoneerror

0

요청에 etags를 사용하는 경우 @typeoneerror에 설명 된 정책을 사용하여 캐싱하면 제대로 작동하는 것 같습니다.

관련 문제