2014-01-29 1 views
0

기본적으로 UIWebView가 있고 외부 리소스에서 내 웹 응용 프로그램을로드하는 Cordova/Phonegap을 사용하여 iOS 응용 프로그램을 작성합니다. (iOS6 +)NSURLCache가 다시 시작한 후 디스크에서로드되지 않습니다.

이 웹 응용 프로그램을 실행하려면 450kb의 HTML이 필요하며, 변경 사항이 없을 때이 파일을 캐시하고 싶습니다. (변경을 격주)이 들어

, 나는 초기화하는 동안 내 AppDelegate에있는 NSURLCache을 설정 해요 : 응용 프로그램이로드 된 후

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

, 파일이 현재 캐시되어, 나는 도서관에서 찾을 수 있습니다/Caches/APPName/fsCachedData.

내가 요청을 볼 수 CharlesProxy을 사용하고, 앱을 한 번로드되면, 모든 다시로드 해당 파일 여기

에, 수정되지, 304을 반환은 문제

모든입니다 내가 파일을 캐시 폴더에 있지만 iOS 응용 프로그램을 열 때, 그것은 서버에서 다시로드하고 가장 최근 버전을 저장합니다. If-modified-since는 첫 번째 요청에서 요청 매개 변수로 설정되지 않고 다음 매개 변수로 설정됩니다.

디스크에서 NSURLCache를로드하기 위해 Xcode에 명시 적으로 요청해야하는지 확실하지 않거나 제대로 설정하지 않았습니다.

아무도 프로세스에서 문제를 볼 수 있습니까?

추가 정보 :을-검증해야합니다

캐시 제어는 = 31536000 개인, 최대 사용 기간입니다. NSURLRequest cachePolicy는 NSURLRequestUseProtocolCachePolicy입니다.

감사합니다.

답변

1

이 문제의 원인은 입니다. CordovaLibrary입니다. CDVURLProtocol & CDVUserAgent가 있으며 요청을 가로 채고 기존 정보와 충돌합니다.

문제를 해결하려면 CDVUserAgent가 UserAgent를 설정하지 못하게해야하지만 로컬 파일에 대한 제한이 적용될 수 있습니다. 필자의 경우 소스는 서버에서 검색됩니다.