2014-10-09 128 views
1

我知道,高速緩存策略可如果我們使用的查詢在Parse.com服務(防爆:)緩存策略

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

,但如果我只用解析的休息怎麼辦呢設定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,則必須實施自己的緩存解決方案。 – 2014-10-09 07:32:21

+0

query.setCachePolicy(ParseQuery.CachePolicy.NETWORK_ELSE_CACHE);例如在服務器響應中更改HTTPHeaders。我需要一種方法來更改服務器的響應頭以允許緩存。適用於iOS的AFHttpNetworkig可以使用緩存,但它需要propers標頭filelds – alex 2014-10-09 07:46:18

+0

您是否嘗試過在請求中設置Cache-Control標頭? – 2014-10-09 08:15:30

回答

2

你混淆了本地緩存服務器緩存。查詢緩存策略是關於本地緩存的。對於iOS SDK,Parse可能使用文件緩存或類似文件,如下所示:

將查詢結果緩存在磁盤上通常很有用。這讓 您的數據顯示在用戶的設備處於離線狀態,或當應用程序有 剛剛起步,網絡請求還沒有來得及完成。 Parse負責自動刷新緩存,當它佔用太多空間時,會佔用 。

默認查詢行爲不使用緩存,但你可以通過設置query.cachePolicy使 緩存。例如,嘗試網絡 ,然後回落到緩存的數據,如果網絡不可用: (https://parse.com/docs/ios_guide#queries-caching/iOS

你的榜樣(NETWORK_ELSE_CACHE)是記錄了iOS版SDK

如下

kPFCachePolicyNetworkElseCache 查詢首先嚐試從網絡加載,但如果失敗,它從緩存加載結果。如果網絡和緩存都不成功,則會出現PFError。

這有什麼好做的緩存控制標頭。緩存控制指令修改服務器的緩存行爲。

如果你想使用REST API,而不是所提供的SDK,並希望客戶端緩存,則必須實現一個自己。