2011-06-30 6 views
8

ためwebviewsキャッシュをクリアし、私はいくつかの類似した記事を見つけましたが、彼らは私がやっていると何の影響も与えていないようです。私はUIWebViewを持っています。私は自分のバンドルにローカルコンテンツを表示しています。具体的には、私はdocxファイルを表示しています。ユーザーはめったにこのドキュメントを見るべきではなく、私のアプリはメモリが逼迫しているので、UIWebViewがドキュメントをキャッシュできないようにしたい。もう1つの実行可能なオプションは、ユーザーがビューを離れるときにキャッシュをクリアすることです。ユーザーがビューに入るたびに最初からロードする必要があります。ローカルファイル

私はそうのようなドキュメントを読み込む:

[[NSURLCache sharedURLCache] setMemoryCapacity:0]; 
[[NSURLCache sharedURLCache] setDiskCapacity:0]; 

そして:

NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:nil]; 
[NSURLCache setSharedURLCache:sharedCache]; 
[sharedCache release]; 
sharedCache = nil; 

そして:

を私が試したキャッシュを停止する私の試みにおいて

NSString * path = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"Intro text"] ofType:@"docx"]; 
NSURL * url = [NSURL fileURLWithPath:path]; 
request = [NSURLRequest requestWithURL:url]; 

doc_view_rect = CGRectMake(5,105,self.view.frame.size.width,self.view.frame.size.height); 
doc_viewer = [[UIWebView alloc] initWithFrame:doc_view_rect]; 
[doc_viewer loadRequest:request]; 

if(request) { 
    [[NSURLCache sharedURLCache] removeCachedResponseForRequest:request]; 
} 
[[NSURLCache sharedURLCache] removeAllCachedResponses]; 

私はまた、ポリシーをキャッシュするウェブビューを設定しようとしたが、それはちょうど私はWebViewのをリリースしたときに、残された記憶が残っていたとして、メモリを食べるように見えました。再入力して再割り当てすると、同じメモリは使用されませんでした。

でも、私は、これは正しい方向だとは思いません。これらはすべて、Webページのキャッシュを停止する方法としてタグ付けされていましたが、ローカルファイルには影響しないようです。 私は本当にこれ以外にどこに行くべきか分かりません。誰かがキャッシュをクリアする方法を知っていたり、最初のキャッシングを防ぐのであれば、私はいくつかの助けに非常に感謝します。

答えて

0

WebKitが標準NSURLCache 1に加えて、独自のキャッシュを維持します。あなたはそれを支配しません。

は現実的に、あなたは確かにあなたのコードは、メモリ不足の警告の下でも動作します確認する必要があり、かつUIWebViewは同じことをするでしょうことを信頼しています。

0

私はあなたの問題は、キャッシュされたデータをロードする、または単純な最後の要求されたURLがキャッシュされたこと、したがってロードする新しい文書をトリガされなかったかはわかりません。それは私のためのケースのように見えたので、私はこの非常に汚いトリックを使用:

- (void)webViewLoadURL:(NSURL *)url 
{ 
    [[_webView mainFrame] loadRequest:_urlRequestCacheBust]; 

    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10]; 
    [[_webView mainFrame] loadRequest:urlRequest]; 
} 

*身震い*

_urlRequestCacheBust = [NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"] cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10]; 

そして、それぞれの新しいWebリクエストのための

関連する問題