2012-03-16 8 views
19

キャッシュなしでwebviewをロードしますか?キャッシュなしのUIwebview

//Create a URL object. 
NSURL *url = [NSURL URLWithString:urlAddress]; 
//URL Request Object 
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; 
//Load the request in the UIWebView. 
[kdgWebView loadRequest:requestObj]; 

ありがとうございました。

ジーン。

答えて

34

のObjective-C:

// Remove and disable all URL Cache, but doesn't seem to affect the memory 
[[NSURLCache sharedURLCache] removeAllCachedResponses]; 
[[NSURLCache sharedURLCache] setDiskCapacity:0]; 
[[NSURLCache sharedURLCache] setMemoryCapacity:0]; 

あなたはhttp://blog.techno-barje.fr/post/2010/10/04/UIWebView-secrets-part2-leaks-on-release/

スウィフトでより多くの情報を見つけることができます。

NSURLCache.sharedURLCache().removeAllCachedResponses() 
NSURLCache.sharedURLCache().diskCapacity = 0 
NSURLCache.sharedURLCache().memoryCapacity = 0 
+0

は私のために動作しません?これをコードに入れてもキャッシュデータがロードされます。 –

+0

キャッシュポリシーを変更することができます – LuisEspinoza

+0

お返事ありがとうございます。このソリューションは私のために働いていました。私はUIWebViewを使用していて、インターネットに接続されていないときにキャッシュされたページをロードしたくなかったのです。 –

12

あなたは、コードを使用して、あなたのキャッシュポリシーを変更することができます。

NSURLRequest *requestObj = [NSURLRequest requestWithURL:url 
             cachePolicy:NSURLRequestReloadIgnoringCacheData 
            timeoutInterval: 10.0]; 
+0

あなたはそれを試しましたか? – LuisEspinoza

+0

ありがとう、キャッシュがロードされていた理由が見つかりました... キャッシュマニフェストを使用しましたが、HTML5にキャッシュマニフェストのバグがあります。 –

0

Iここで同様の質問に答えてみてください。私はそれがあなたのために有用であったと思います!最後の解決策は、HTMLでは機能しますが、htmlでリンクされた画像、CSS、およびJSでは機能しません。

How to clear UIWebView cache?

0

私は、これらのソリューションのすべてを試みたが、それらのどれも一つ一つの時間を動作しません。私の主なテストは、htmlページの背景として設定されたイメージを持つhtmlページでした。このHTMLページと画像は、私が書いた "同期"方法を使ってiPadにローカルにダウンロードされます。キャッシュを完全にリセットする唯一の方法は、htmlページ内のイメージのURLを常に変更して、毎回ユニークなイメージだと思うようにすることです。例えば、私のhtmlで:

<body background="image.png?v123"> 

ので、各ページの変更私は、バージョン番号を更新する必要があります

<body background="image.png?v1234"> 

などなどあなただけの、とにかくあなたが欲しいでそれをURLを変更することができます異なっている必要があります。

これはうんざりです。今、私はローカルにコンテンツをダウンロードするとき、私は代わりに動的に含まれているフォルダの名前を変更しています。このフォルダは親フォルダで、すべてのリンクが相対的なので、毎回自分のhtmlファイルを編集する必要はありません。これまでのところ、それはうまく動作しているようです。私はこれらの他のメソッドが一貫していることを望みます。単にキャッシュをリセットするほうがずっと簡単です。

だから私の要求になど、私のキャッシュをリセットする原因になっているそのベースURLではなく、私のURLまたは背景画像にクエリ文字列、またはCSSファイルなど、

NSString *myURL = @"index.html"; 
NSURL *baseURL = [NSURL fileURLWithPath:@"FULL_PATH_TO_DOCS/MYFOLDERV123"]; 
[myTargetWebView loadHTMLString:myURL baseURL:baseURL];