zoukankan      html  css  js  c++  java
  • iphone 如何清空UIWebView的缓存

     

    I actually think it may retain cached information when you close out the UIWebView. I've tried removing a UIWebView from my UIViewController, releasing it, then creating a new one. The new one remembered exactly where I was at when I went back to an address without having to reload everything (it remembered my previous UIWebView was logged in).

    So a couple of suggestions:

    [[NSURLCache sharedURLCache] removeCachedResponseForRequest:NSURLRequest];

    This would remove a cached response for a specific request. There is also a call that will remove all cached responses for all requests ran on the UIWebView:

    [[NSURLCache sharedURLCache] removeAllCachedResponses];

    After that, you can try deleting any associated cookies with the UIWebView:

    for(NSHTTPCookie *cookie in [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]) {
    
        if([[cookie domain] isEqualToString:someNSStringUrlDomain]) {
    
            [[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
        }
    }

    Let me know where that gets you.

    I had nearly the same problem. I wanted the webview cache to be cleared, because everytime i reload a local webpage in an UIWebView, the old one is shown. So I found a solution by simply setting thecachePolicy property of the request. Use a NSMutableURLRequest to set this property. With all that everything works fine with reloading the UIWebView.

    NSURL *url = [NSURL fileURLWithPath:MyHTMLFilePath]; 
     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 
     [request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
     [self.webView loadRequest:request];

    Hope that helps!

    Don't disable caching completely, it'll hurt your app performance and it's unnecessary. The important thing is to explicitly configure the cache at app startup and purge it when necessary.

    So in application:DidFinishLaunchingWithOptions: configure the cache limits as follows:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {   
        int cacheSizeMemory = 4*1024*1024; // 4MB
        int cacheSizeDisk = 32*1024*1024; // 32MB
        NSURLCache *sharedCache = [[[NSURLCache alloc] initWithMemoryCapacity:cacheSizeMemory diskCapacity:cacheSizeDisk diskPath:@"nsurlcache"] autorelease];
        [NSURLCache setSharedURLCache:sharedCache];
    
        // ... other launching code
    }

    Once you have it properly configured, then when you need to purge the cache (for example inapplicationDidReceiveMemoryWarning or when you close a UIWebView) just do:

    [[NSURLCache sharedURLCache] removeAllCachedResponses];

    and you'll see the memory is recovered. I blogged about this issue here:http://twobitlabs.com/2012/01/ios-ipad-iphone-nsurlcache-uiwebview-memory-utilization/

    You can disable the caching by doing the following:

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

     
  • 相关阅读:
    拯救祭天的程序员——事件溯源模式
    啥?SynchronousQueue和钟点房一个道理
    程序员应该掌握的一些 Linux 命令
    Linux 环境下使用 sqlplus 访问远程 Oracle 数据库
    我对鸿蒙OS的一些看法
    我对技术潮流的一些看法
    git merge --ff/--no-ff/--ff-only 三种选项参数的区别
    go语言的初体验
    完全使用 VSCode 开发的心得和体会
    重复代码的克星,高效工具 VSCode snippets 的使用指南
  • 原文地址:https://www.cnblogs.com/yuanxiaoping_21cn_com/p/4743080.html
Copyright © 2011-2022 走看看