0

私のコードでは、アプリケーションのライフサイクルの最初にすべての画像をダウンロードしています。

[ASIHTTPRequest setDefaultCache:[ASIDownloadCache sharedCache]];

     NSURL *url = [NSURL URLWithString:[item imagePath]];
     __block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
     [request setCompletionBlock:^{
     //NSData *responseData = [request responseData];
     //[iw setImage: [UIImage imageWithData:responseData] forState:UIControlStateNormal];   
}];

[request setFailedBlock:^{
     // NSError *error = [request error];
     //[iw setImage:nil forState:UIControlStateNormal];         
}];

[request setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy];
     [request startSynchronous];
}];                

すべての画像名は一意です。そして、それらは頻繁に変更されていません。必要なのは、アプリケーションの終了後も画像をキャッシュに保持することです。そして、アプリケーションを再度開くと、ダウンロードしたキャッシュからアプリケーションが読み取られます。
出来ますか?

4

1 に答える 1

0

これは確かに可能です。キャッシュストレージポリシーはすでに正しいです。

適切なキャッシュポリシーも指定する必要があります。http://allseeing-i.com/ASIHTTPRequest/How-to-use#about_cache_policiesを参照してください。

ここで重要なことは、データの有効期限を気にすることです。デフォルトモードでは、ASIHTTPRequestは有効期限を処理し、データの有効期限が切れている場合は、データを再読み込みします。私の経験から、サーバーが適切な有効期限を指定しないことが多いので、を使用することを検討してくださいASIOnlyLoadIfNotCachedCachePolicy

必要に応じて、有効期限を自分で指定することもできます(画像が変更されることがあるため、これはさらに興味深い場合があります)。私のリンクをたどると、必要なすべての情報がそこにあります(「その他のキャッシュ関連機能」を参照)。

ああ、もう1つ:ASIHTTPRequestはもう最新ではありません。開発者はプロジェクトを放棄しました。したがって、ASIHTTPRequestはARCなどをサポートしていません。可能であれば、AFNetworkingやRestKitなどの別のフレームワークに切り替えてください。

于 2012-04-09T11:12:46.590 に答える