UIWebview キャッシュのクリア 質問する

UIWebview キャッシュのクリア 質問する

メソッドを使用して Web ページをロードするために UIWebview を使用しましたloadRequest:。そのシーンを終了するときに、[self.webView stopLoading];webView を呼び出して解放します。

最初の起動時にアクティビティ モニターで実メモリが 4MB 増加したことが確認されましたが、複数回の起動/読み込みでは実メモリは増加していません。増加するのは 1 回だけです。

WebView の保持カウントを確認しました。正しい値、つまり 0 です。UIWebView がデータをキャッシュしていると思います。キャッシュを回避したり、キャッシュされたデータを削除したりするにはどうすればよいでしょうか。それとも、別の理由があるのでしょうか。

ベストアンサー1

実際に、 を閉じてもキャッシュされた情報が保持されるのではないかと思います。から をUIWebView削除し、解放してから、新しい を作成してみました。新しい は、アドレスに戻ったときに、すべてを再ロードしなくても、どこにいたかを正確に記憶していました (以前のログイン状態を記憶していました)。UIWebViewUIViewControllerUIWebView

そこで、いくつか提案があります。

[[NSURLCache sharedURLCache] removeCachedResponseForRequest:NSURLRequest];

これにより、特定のリクエストのキャッシュされた応答が削除されます。 で実行されたすべてのリクエストのキャッシュされた応答をすべて削除する呼び出しもありますUIWebView

[[NSURLCache sharedURLCache] removeAllCachedResponses];

その後、次の方法で関連する Cookie を削除してみてくださいUIWebView

for(NSHTTPCookie *cookie in [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]) {

    if([[cookie domain] isEqualToString:someNSStringUrlDomain]) {

        [[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
    }
}

スイフト3:

// Remove all cache 
URLCache.shared.removeAllCachedResponses()

// Delete any associated cookies     
if let cookies = HTTPCookieStorage.shared.cookies {
    for cookie in cookies {
        HTTPCookieStorage.shared.deleteCookie(cookie)
    }
}

おすすめ記事