2011-10-25 2 views
3

인터넷을 사용할 수있을 때 JSON을 가져 와서 캐시하고 싶으면 캐시를 사용하고 싶습니다. 이 코드를 사용했지만 오프라인 일 때 요청의 responseString은 항상 null입니다. . (문서는 서버에 네트워크 연결이 없을 때 200 또는 300 응답오프라인으로 ASIDownloadCache 사용

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
[request setDownloadCache:[ASIDownloadCache sharedCache]]; 

어떤 생각이 캐시 된 데이터를 얻기 위해 반환하는 경우에만 작동 말한다

감사합니다

답변

2

당신이 사용할 수 있습니까?. :

[[ASIDownloadCache sharedCache] pathToCachedResponseDataForURL:] 

는 디스크 캐시의 경로를 얻으려면. 캐시 된 데이터가없는 경우는 nil를 반환합니다.

+0

감사! 그것은 위대한 작품! – Matthew

+0

서버가 다운 된 경우 최후의 수단으로 오래된 캐시 된 데이터를 반환하는 데 적합 –

2

요청이 응용 프로그램 세션에서 영구적으로 영구히 캐시되어 있는지 확인해야합니다. 이 설정하려면 : 요청이 캐시

[request setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy]; 

되면, 즉시 한 원격 연결이 실패 할 때 다운로드 캐시의 정책이 다시 캐시 떨어지는 캐시 된 데이터를 반환합니다. [ASIDownloadCache sharedCache]은 이미이 케이스를 충분히 잘 처리하는 기본 캐시 정책으로 설정되어 있어야합니다.

+0

서버가 오프라인 상태가되고 데이터에 * expires : * 헤더가 있으면 충분하지 않습니다. 요청은 nil을 반환합니다. –

+0

이제 사람들은 실제로는 'ASIHTTPRequest'를 전혀 사용하지 않아야합니다. ['AFNetworking'] (https://github.com/AFNetworking/AFNetworking)과 같은 것으로 전환하십시오. – darvids0n

+0

@ darvids0n AFnetworking이 자동 캐싱을 지원합니까? –

관련 문제