2012-04-20 5 views
5

CachePolicyでNSURLRequestを使用してNSDataのplistをダウンロードしています。私のplistの内容を変更すると、私のアプリはこれを無視して、キャッシュされているコンテンツを表示します。キャッシュはどれくらい持続しますか?キャッシュデータがどれくらいの間持続するかを言うオプションがある場合は、 NSURLRequestをチェックする方法はありますか?サーバー上のデータがキャッシュよりも新しい場合、サーバーからデータをロードするか、それともキャッシュと等しい場合はキャッシュを使用しますか?NSURLRequestキャッシュポリシー

答えて

2

URLLoadingSystem docsのレスポンスキャッシュの制御をご覧ください。

あなたは、はるかに簡単なキャッシュシステムではASIHTTPRequestあるデリゲートメソッド

-(NSCachedURLResponse *)connection:(NSURLConnection *)connection 
       willCacheResponse:(NSCachedURLResponse *)cachedResponse 

で独自の日付を追加することができます。このURLローディングシステムを使用することをお勧めします。アップルのドキュメントから

:リスト6で

の例では、HTTPS応答のキャッシュを防ぐことができます。また は、キャッシュされた応答 のユーザー情報辞書に現在の日付を追加します。

-(NSCachedURLResponse *)connection:(NSURLConnection *)connection 
       willCacheResponse:(NSCachedURLResponse *)cachedResponse 
{ 
    NSCachedURLResponse *newCachedResponse = cachedResponse; 

    if ([[[[cachedResponse response] URL] scheme] isEqual:@"https"]) { 
     newCachedResponse = nil; 
    } else { 
     NSDictionary *newUserInfo; 
     newUserInfo = [NSDictionary dictionaryWithObject:[NSCalendarDate date] 
               forKey:@"Cached Date"]; 
     newCachedResponse = [[[NSCachedURLResponse alloc] 
           initWithResponse:[cachedResponse response] 
            data:[cachedResponse data] 
            userInfo:newUserInfo 
            storagePolicy:[cachedResponse storagePolicy]] 
          autorelease]; 
    } 
    return newCachedResponse; 
} 
+0

ありがとうございます。しかし、一定の時間キャッシュを維持する方法や、サーバーから入手できる新しいデータがあるかどうかを確認する方法はありますか? 接続::willCacheResponse:接続がデリゲートにそれを変更する機会を与えるために、キャッシュ内にキャッシュされた応答を格納する前に送信され – halloway4b

+0

私が更新した私の答え –

+0

のiOS 6.1 SDKドキュメントには、次のように述べています。 (必須)(iOS 2.0からiOS 4.3で利用可能) – cynistersix

関連する問題