19

起動後も持続する iOS アプリケーション用のネットワーク キャッシング ソリューションを探しています。NSURLCache について読み始めましたが、永続性に関する言及はありませんでした。NSURLCache を使用してからアプリを閉じて開くと、これがどのように動作するか知っている人はいますか? それは持続しますか?

4

1 に答える 1

13

NSURLCacheは、サーバーからのキャッシュ応答、キャッシュ構成、および要求のキャッシュ ポリシーに従って、NSURLConnection行われた要求の要求を自動的にキャッシュします。UIWebViewこれらの応答は、キャッシュの有効期間中、メモリとディスクに保存されます。


さておき

次のコードで動作を検証しました。 独自のコードで以下のいずれも使用する必要はありません。これは、動作をどのように確認したかを示すためのものです。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Prime the cache.
    [NSURLCache sharedURLCache];
    sleep(1); // Again, this is for demonstration purposes only. I wouldn't do this in a real app.

    // Choose a long cached URL.
    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://cdn.sstatic.net/stackoverflow/img/favicon.ico"]];

    // Check the cache.
    NSCachedURLResponse *cachedResponse = [[NSURLCache sharedURLCache] cachedResponseForRequest:request];
    NSLog(cachedResponse ? @"Cached response found!" : @"No cached response found.");

    // Load the file.
    [NSURLConnection sendSynchronousRequest:request returningResponse:NULL error:NULL];

    return YES;
}

コードは次のことを行います。

  1. キャッシュをプライミングします。キャッシュが初期化され、ディスクをスキャンする機会が得られるまで、キャッシュがキャッシュされた結果を返さないという動作に気付きました。
  2. ロング キャッシュ ファイルの要求を作成します。
  3. URL に対する応答が存在するかどうかを確認し、ステータスを表示します。
  4. URL を読み込みます。

最初の読み込みでは、「キャッシュされた応答が見つかりません」と表示されます。以降の実行では、「キャッシュされた応答が見つかりました!」と表示されます。

于 2013-08-26T21:37:18.687 に答える