2012-04-09 3 views
0

、私は、アプリケーションのライフサイクルの初めにすべての画像をダウンロードしています:ASIHTTPDownloadCacheを使用してキャッシングを行う方法は?私のコードで

[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]; 
}];     

イメージ名のすべてがユニークです。そして、彼らは頻繁に変化していません。私が必要とするのは、アプリケーションが終了した後でも、キャッシュにイメージを保持することです。また、アプリケーションを再び開くと、ダウンロードしたキャッシュからアプリケーションが読み込まれます。
可能ですか?

答えて

0

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

あなたはここで重要なのは、データ有効期限を気にすることですhttp://allseeing-i.com/ASIHTTPRequest/How-to-use#about_cache_policies

を参照してください、だけでなくappropiateキャッシュポリシーを指定する必要があります。デフォルトモードでは、ASIHTTPRequestは有効期限を考慮し、データが期限切れになっている場合はデータをリロードします。私の経験から、サーバーは適切な有効期限を指定しないことが多いので、ASIOnlyLoadIfNotCachedCachePolicyを使用することを検討してください。

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

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

+0

本当に?さて、私はAFNetworkingに移動することができます。ありがとうございました。 – Burak

+0

こんにちは。私はAFNetworkingに移りました。さて、アプリケーションの開始時にすべてのメイジをキャッシュにロードして、キャッシュ内のアプリ内で使用するにはどうしたらよいですか? – Burak

+0

NSURLCache(UIImageView(AFNetworking)カテゴリと一緒に動作)を使用することも、永続的なキャッシュモジュールを手動でプルすることもできます(http://stackoverflow.com/questions/7529258/what-major-asihttprequest-features-is -afnetworking-missing)。 AFNetworking/NSURLCacheでキャッシュを使用する際に問題がある場合は、それをSOで検索するか、別のタグを付けて開きます。 – JiaYow

関連する問題