다운로드 파일을 캐시하기 위해 ASIDownloadCache를 사용하고 있습니다. 아래 코드는 요청과 다운로드 캐시를 설정하는 방법입니다. `요청 = [super initWithURL : url1]; [요청 setTimeOutSeconds : 50];ASIDownloadCache 캐싱 된 데이터가 항상 사용되는 이유는 무엇입니까?
ASIDownloadCache *cache = [[ASIDownloadCache alloc] init] ;
[cache setStoragePath:[path stringByAppendingPathComponent:@"resource"]];
[cache setShouldRespectCacheControlHeaders:NO];
self.myCache = cache;
[cache release];
[request setDownloadCache:self.myCache];
//[self setSecondsToCache:60*60*24*30];
[request setCachePolicy:ASIAskServerIfModifiedCachePolicy];
[request setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy];
` 내 문제는 URL의 헤더가 수정 된 경우에는 ASIDownloadCache 여전히 캐시 된 데이터를 사용하고 있다는 점이다. 왜? 누군가 대답을 알고 있니?
변경하기 전에 해당 URL의 헤더처럼 다음
HTTP/1.1 200 OK 서버 : 아파치/2.2 캐시 제어 : 공공 콘텐츠 형식 : text/html; 문자셋 = UTF-8 날짜 : 2011년 11월 7일 (월) 그리니치 표준시 08시 26분 15초을 만료 : 2011년 11월 7일 (월) 그리니치 표준시 08시 23분 35초 에서 Pragma : 공공 전송 - 인코딩 : 1320654215 연결 : Etag입니다 청크 : 연결 유지 마지막 수정 :
HTTP/1.1 200 OK 서버 : 아파치/2.2 캐시 - 2011년 11월 7일 (월) 그리니치 표준시 08시 23분 35초
헤더를 수정 한 후하면 다음과 같다 컨트롤 : 공개 콘텐츠 형식 : text/html; 문자셋 = UTF-8 날짜 : 2011년 11월 7일 (월) 그리니치 표준시 08시 28분 49초을 만료 : 2011년 11월 7일 (월) 그리니치 표준시 08시 28분 32초 에서 Pragma : 공공 전송 - 인코딩 : 1320654512 연결 : Etag입니다 청크 : Keep-Alive Last-Modified : 2011 년 11 월 7 일 08:28:32 GMT
Last-Modified 필드가 동일하지 않더라도 캐시 된 데이터를 계속 사용하고 있습니다.
charlesproxy 또는 유사하게 ASIHTTPRequest가 보내는 요청 및 서버의 응답을 캡처하여 질문에 추가하십시오. – JosephH
헤더가 나열됩니다. 헤더에 문제가 있습니까? – Terry
그들은 괜찮아 보인다. 코드를 살펴보고 캐시 된 데이터를 사용하는 이유를 알아야합니다. readResponseHeaders 및 중단 점 내에서 canUseCachedDataForRequest – JosephH