2014-10-09 3 views
1

나는 우리가 (예 :캐시 정책은

ParseQuery query = new ParseQuery("Players"); 
query.setCachePolicy(ParseQuery.CachePolicy.NETWORK_ELSE_CACHE); 

Parse.com 서비스에 쿼리를 사용하는 경우 캐시 정책이 설정 될 수 있지만 난 단지 구문 분석의 나머지를 사용하는 경우 그것을 할 방법을 알고 API? 개체 모델 + 응용 프로그램 내부의 네트워크 계층은 구문 분석과 독립적입니다. 데이터가있는 json 만 있으면됩니다.

curl -X GET -H "X-Parse-Application-Id: hgjsdgfsjfjsdf" -H "X-Parse-REST-API-Key: kjsdhfjsfhsdfbjsdfsdhjf" https://api.parse.com/1/classes/Players 

이 GET은 작동하지만 캐싱은 지원하지 않습니다. 해결 방법이 있다면? 많은 감사합니다.

+1

캐싱은 클라이언트 측에서 수행됩니다. REST API를 직접 사용하는 경우 사용자 고유의 캐싱 솔루션을 구현해야합니다. –

+0

query.setCachePolicy (ParseQuery.CachePolicy.NETWORK_ELSE_CACHE); 서버가 응답 할 때 HTTPHeaders를 변경합니다. 캐싱을 허용하기 위해 서버의 응답 헤더를 변경하는 방법이 필요합니다. iOS 용 AFHttpNetworkig는 캐시에서 작동하지만 propers 헤더가 필요합니다. filelds – alex

+0

요청에 Cache-Control 헤더를 설정해 보셨습니까? –

답변

2

로컬 캐시와 서버 캐시가 혼동을 일으킬 수 있습니다. 쿼리 캐시 정책은 로컬 캐시에 대한 것입니다. iOS SDK의 경우 Parse는 문서에서 다음과 같이 표시된 파일 캐싱 또는 유사한 것을 사용합니다.

디스크에 쿼리 결과를 캐시하는 것이 유용한 경우가 많습니다. 이렇게하면 사용자의 기기가 오프라인이거나 앱이 방금 시작되었고 네트워크 요청을 완료하는 데 시간이 없다면 데이터를 표시 할 수 있습니다. 공간이 너무 많아서 을 차지하면 구문 분석을 통해 캐시가 자동으로 비워집니다.

기본 쿼리 동작은 캐시를 사용하지 않지만 query.cachePolicy를 설정하여 캐싱을 사용하도록 설정할 수 있습니다. 네트워크를 사용할 수없는 경우 예를 들어, 네트워크 를 시도하고 캐시 된 데이터로 다시 가을 : (https://parse.com/docs/ios_guide#queries-caching/iOS)

귀하의 예 (NETWORK_ELSE_CACHE) 아이폰 OS SDK

에 대해 다음과 같이 설명되어 있습니다

kPFCachePolicyNetworkElseCache 쿼리는 먼저 네트워크에서로드하려고 시도하지만 실패 할 경우 캐시에서 결과를로드합니다. 네트워크 나 캐시가 성공하지 못하면 PFError가 발생합니다.

이것은 캐시 제어 헤더와 아무 관련이 없습니다. 캐시 제어 지시문은 서버의 캐싱 동작을 수정합니다.

제공된 SDK와 반대되는 REST API를 사용하고 클라이언트 측 캐싱을 원한다면 직접 구현해야합니다.

관련 문제