7

iPhone アプリで と を使用ASIHttpRequestsASINetworkQueueて、Web サービスから 10 万個の XML ファイルと多数のサムネイルを取得しています。のスタイルでリクエストをキャッシュしたいと思いますNSURLCache。ASIはキャッシュをそのままサポートしていないようで、コードを見てみるとCに落ちてリクエストを作成しているので、NSURLCacheレイヤーを挿入するのは難しいようでした。

これを実装する最良の方法は何ですか?

4

5 に答える 5

3

ASIHTTPRequest がキャッシングをサポートするようになりました - ASIDownloadCache を確認してください。

[ASIHTTPRequest setDefaultCache:[ASIDownloadCache sharedCache]]
于 2011-07-13T10:52:45.380 に答える
1

ASIHTTPRequestを使用してこれを直接行う方法を尋ねる人は、オプションとしてこの機能のサポートを追加するコードのこのブランチに興味があるかもしれません。

于 2010-05-16T17:42:51.947 に答える
1

ASI コードにドロップダウンする前に、独自のキャッシングを提供できます。

メソッドを持つクラスに ASI コードをラップします。

-(NSString *)getContentFor:(NSURL *)url

このメソッドは、最初に内部 NSDictionary をチェックして、指定された URL のキーが存在するかどうかを確認します。存在する場合は、キーと共に格納されているオブジェクトを返します。

そうでない場合は、通常の ASIRequest を実行します。リクエストがサーバーから受信されると、URL のキーとともに辞書に文字列として保存されます。

もちろん、非同期リクエストと古いリクエストの期限切れを慎重に処理する必要があります。

于 2010-05-13T17:12:36.363 に答える
0

これを試してください、それは私のために働きます。

__block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
    [request setDownloadCache:[ASIDownloadCache sharedCache]];
    [request setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy];
   [request setCachePolicy:ASIAskServerIfModifiedWhenStaleCachePolicy];
   [request setSecondsToCache:60*60*24]; // Cache for 24 hrs
    [request setDelegate:self]; // A delegate must be specified
    [request setCompletionBlock:^{
于 2012-03-08T13:23:44.637 に答える
0

NSURLConnection は NSURLCache のスタイルでキャッシュをサポートしており、舞台裏で多くの作業を行っています。cachedResponse を操作できる便利なデリゲート メソッドもあります。

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

于 2010-03-12T04:31:44.760 に答える