5

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

4

1 に答える 1

2

URLLoadingSystem docsの Controlling Response Caching をご覧ください。

デリゲート メソッドに独自の日付を追加できます

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

ASIHTTPRequestを使用すると、キャッシュ システムを使用する方がはるかに簡単です。この URL Loading System を使用することをお勧めします。

アップルのドキュメントから:

リスト 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;
}
于 2012-04-20T17:01:03.280 に答える