8

私はいくつかの同様の投稿を見つけましたが、それらは私がしていることに何の影響も与えていないようです。UIWebViewバンドル内のローカルコンテンツを表示するために使用しているものがあります。具体的には、docxファイルを表示しています。ユーザーがこのドキュメントを見ることはめったにありません。私のアプリはメモリが不足しているので、私がやりたいのはUIWebView、ドキュメントをキャッシュできないようにすることです。もう1つの実行可能なオプションは、ユーザーがビューを離れたときにキャッシュをクリアすることです。ユーザーがビューに入るたびに最初からロードする必要があるので、まったく問題ありません。

私は次のようにドキュメントをロードします:

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

私が試したキャッシュを停止する試みでは、次のようになります。

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

と:

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

また、Webビューのキャッシュポリシーを設定しようとしましたが、Webビューをリリースしたときにまだメモリが残っていたため、メモリを消費しているように見えました。再入力して再割り当てしたとき、同じメモリを使用していませんでした。

しかし、これは正しい方向ではないと思います。これらはすべて、Webページのキャッシュを停止する方法としてタグ付けされていますが、ローカルファイルには効果がないようです。これで他にどこに行けばいいのかよくわかりません。誰かがキャッシュを強制的にクリアする方法、またはそもそもキャッシュを防ぐ方法を知っているなら、私はいくつかの助けを大いに感謝します。

4

2 に答える 2

0

あなたの問題がキャッシュされたデータを読み込んでいたのか、それとも最後に要求された URL がキャッシュされていたために新しいドキュメントの読み込みがトリガーされなかったのかはわかりません。それは私に当てはまるようだったので、この非常に汚いトリックを使用しました:

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

そして、新しい Web リクエストごとに:

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

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

*身震い*

于 2014-07-10T17:05:56.897 に答える