2013-09-12 5 views
2

GET 요청에서 ETag 캐싱을 구현하려고하는데 AFNetworking을 사용하여 전송하지만 AFNetworking REST API ~ ~ ~ 캐싱이있는 솔루션을 찾을 수없는 것 같습니다. GET/POST를 보내고 캐시를 제어하는 ​​방법을 보여주는 예제 코드가 필요합니다. Xycom의 :/my.json HTTP/1.1 호스트에AFagetworking Rest API with Etag Caching

GET 경로/:

NSString *path = @"path/to/my.json"; 
AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL:self.baseNSURL]; 
[client registerHTTPOperationClass:[AFJSONRequestOperation class]]; 
[client setDefaultHeader:@"Accept" value:@"application/json"]; 
[client getPath:path 
    parameters:nil 
     success:^(AFHTTPRequestOperation *operation, id responseObject) { 
      NSLog(@"%@",responseObject); 
     } 
     failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
      NSLog(@"%@",error); 
     } 
]; 

과 나가는 HEADER (NO 캐시 제어) : 내가 지금이 단지 요청하지 캐시입니다 : 80 수락 - 인코딩 : gzip을을 을 폐의 수락 : 응용 프로그램/JSON을 쿠키 : PHPSESSID = 35gojgf7s35n8fljlvd5pjudfn0 연결 : 연결 유지 수락 - 언어 : FR, 드, JA, NL, 그것은, ES, PT, PT, 욕실 -PT, da, fi, nb, sv, ko, zh-Hans, zh-Hant, ru, pl, tr, 영국, ar, hr, cs, el, he, ro, sk, th, -GB, ca, hu, vi, en-us; q = 0.8 사용자 에이전트 : myApp/1.0 (iPhone 시뮬레이터; iOS 6.1; Scale/1.00) X- Forwarded-For : 192.130.1.00

답변

0

AFNetworking은 NSURLRequest/NSURLCache 규칙을 따릅니다. 따라서 캐시 제어 헤더를 디스크에 캐시하는 방식으로 추가해야합니다. 디스크 캐싱을보다 직접 제어하려는 경우 SDURLCache을 사용하거나 수정할 수도 있습니다.

+0

일부 코드를 표시 할 수 있습니까? 또한 각 etag에 대한 응답을 저장하기 위해 핵심 데이터를 사용해야합니까, 아니면 처리해야합니까? –

+0

https://devcenter.heroku.com/articles/ios-network-caching-http-headers- 핵심 데이터에 아무것도 넣지 않아도됩니다. HTTP 헤더가 올바르게 설정되었는지 확인하십시오. –

+0

링크를 제공해 주셔서 감사합니다. 튜토리얼처럼 내 애플 리케이션 델리게이트에 NSURLCache를 구현했다. 그러나 나는 여전히 내 응답 헤더에 etag을 얻지 못한다. 나는 서버가 etag를 제공한다는 것을 안다. 요청 헤더에 내용을 입력해야합니까? 그렇다면 무엇? 코드 라인은 링크보다 훨씬 유용합니다! 감사합니다 –