문제

우리는 AfnetWorking을 사용하여 토네이도를 실행하는 서버에 연결하는 iOS 앱을 구축하고 있습니다.서버에는 응답의 헤더 Cache-Control: private, max-age=900가 포함됩니다.로컬 컴퓨터에서 서버를 실행할 때 AfnetWorking은 앱에서 반복되는 요청에 대해 서버가 수신 한 요청이 없기 때문에 캐시 된 값을 사용하도록 알려줄 수 있습니다.테스트 시스템에 동일한 토네이도 서버를 배포 할 때 앱의 각 요청은 캐시 된 값을 무시하여 서버에서 수신 한 요청을 가져옵니다.

두 개의 설정 간의 유일한 차이점은 서버의 URL과 LocalHost가 HTTP를 사용하는 동안 테스트 서버가 HTTPS 연결을 통해 액세스 할 수있는 사실입니다.HTTPS는 Afnetworking에 의한 캐싱에 영향을 미치고 있으며 그렇다면 캐시 헤더를 존중하도록 AfnetWorking을 어떻게 얻을 수 있습니까?

도움이 되었습니까?

해결책

그것도 도움이 될지 모르지만 여기에있는 것이 뭔가가 될 것입니다. Afnetworking은 nsurlcache 공유 캐시를 사용하는 nsurlconnection을 사용합니다. afnetworking 캐시에서 절대적으로 투명하고 아무 것도 구체적인 것을하지 않습니다. 내 요청은 HTTPS이며 잘 캐싱되었습니다.

캐시 제어 응답 지시문을 사용하면 원본 서버가 응답의 기본값을 무시할 수 있습니다. 은밀한 응답 메시지의 전부 또는 일부는 단일 사용자를 대상으로하고 공유 캐시에 의해 캐시되어서는 안됩니다. 이를 통해 원본 서버가 지정된 부분을 지정할 수 있습니다. 응답은 하나의 사용자를위한 것이며 다른 사용자가 요청에 대한 유효한 응답이 아닙니다. 비공개 (비공식) 캐시가 응답을 캐시 할 수 있습니다. http://www.w3.org/protocols/rfc2616/rfc2616-sec14.html# SEC14.9.1

허용되는 경우 정책을 공개적으로 변경하려고합니다. 앱에서 응답에 대한 로그 머리글을보고 cache.db를보고 실제로 무언가가 거기에 캐싱되는지 확인하십시오.

공유 캐시를 구성하려고합니다.

라인을 따라 무언가를 사용합니다.
int cacheSizeMemory = 1*1024*1024; // 4MB
int cacheSizeDisk = 100*1024*1024; // 100MB
[[NSURLCache sharedURLCache] setMemoryCapacity:cacheSizeMemory];
[[NSURLCache sharedURLCache] setDiskCapacity:cacheSizeDisk];
.

이 여기에 대해 또 다른 좋은 읽기 http:///persteinberger.com/blog/2012/nsurlcache-uses. -a-disk-cache-of-ios5 /

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top