私が研究しているがあまり進歩していないいくつかのことについて、誰かが光を当ててくれることを願っています。
NSURLCache を利用して、iOS アプリ内で行った API 呼び出しに対してキャッシュされた応答を返したいと思います。デバイスがオンラインの場合、キャッシュされた応答が最新のものであればそれを返し、それ以外の場合はリモートから取得したいと考えています。デバイスがオフラインの場合、年齢に関係なく、キャッシュされた応答 (存在する場合) をすぐに返したいと思います。
を使用してAFNetworking
います。私が行っている API 呼び出しは、私が制御するサーバーに対するものです。プロトコルは HTTPS です。現在、Cache-Control
応答ヘッダーは"max-age=0, public"
. 現在、キャッシュ関連のリクエスト ヘッダーを設定していません (すべきでしょうか?)。要求のキャッシュ ポリシーをNSURLRequestReturnCacheDataDontLoad
オフライン時に設定NSURLRequestUseProtocolCachePolicy
し、オンライン時にはデフォルトを使用します。Cache.db
また、ディスク上のデフォルトでリクエストとそのレスポンスを確認できます。ただし、オフラインの場合、すべてのリクエストが失敗します(キャッシュされたように見えるにもかかわらず、キャッシュされた応答は使用されません/返されます)。
http://nshipster.com/nsurlcache/sharedURLCache
に従って、 aを初期化し、 AFNetworkingブロックを次のようにdidFinishLaunchingWithOptions
設定します。setCacheResponse
NSMutableDictionary *mutableUserInfo = [[cachedResponse userInfo] mutableCopy]; NSMutableData *mutableData = [[cachedResponse データ] mutableCopy]; NSURLCacheStoragePolicy storagePolicy = NSURLCacheStorageAllowed; return [[NSCachedURLResponse alloc] initWithResponse:[cachedResponse レスポンス] data:mutableData userInfo:mutableUserInfo storagePolicy:storagePolicy];
このトピックに関するこれらの投稿や他の投稿を読みました。
http://petersteinberger.com/blog/2012/nsurlcache-uses-a-disk-cache-as-of-ios5/ http://blackpixel.com/blog/2012/05/caching-and-nsurlconnection.html
標準を使用する前にこの機能を成功裏に達成した人がいるかどうか疑問に思っていますNSURLCache
(成功例にも興味がSDURLCache
ありますが、Peter S. は、iOS5 の時点でディスク キャッシングがサポートされているためSDURLCache
、もはや必要ではないと述べています。デフォルトの組み込みキャッシュ)。
前もって感謝します!