1

UIWebView に必要な大きなファイルの一部をローカルにキャッシュしており、これらのファイルの提供に役立つカスタム実装を備えた NSURLCache のサブクラスを持っています。

- (NSCachedURLResponse *)cachedResponseForRequest:(NSURLRequest *)request

これを使用してリクエストをハイジャックし、ローカルに保存されたファイルのコピーを返します (主に t

cachedResponseForRequest:request の本文 (ボイラー プレートなし) は基本的に次のとおりです。

// logic to figure out what the local file is, load it into a NSData object (f)
NSURLResponse *r = [[NSHTTPURLResponse alloc] initWithURL:request.URL MIMEType:mimetype expectedContentLength:[f length] textEncodingName:nil];
NSCachedURLResponse *cr = [[NSCachedURLResponse alloc] initWithResponse:r data:f] ;
[super storeCachedResponse:cr forRequest:request];
return cr;

これは、単一の svg 画像を除いて、キャッシュされたすべてのコンテンツに対して正しく機能します。svg 画像をロードしようとすると、cachedResponseForRequest:request に進み、NSCachedURLResponse オブジェクトを作成して返します。

ただし、アプリケーションが次に行うことは、リモート サーバーからファイルをダウンロードすることであり、その後のすべての要求はキャッシュから処理されます。ファイルは比較的大きく、パフォーマンスに影響を与えるため、リモートでダウンロードしたくありません。

NSURLCache は .svg ファイルを他のファイルタイプとは異なる方法で処理しますか?

4

1 に答える 1