WKWebView如何清除缓存

作者: 呆呆羞 | 来源:发表于2017-06-16 17:00 被阅读441次

WKWebView如何清除缓存

iOS7.0只有UIWebView, 而iOS8.0是有WKWebView, 但8.0的WKWebView没有删除缓存方法。iOS9.0之后就开始支持啦。
所以使用时候一定要适配iOS9.0以上

适用场景

清除WKWebView的缓存,让H5页面一刷新就更新至最新的页面

选择在合适逻辑加上以下代码:

清除所有的缓存

- (void)deleteWebCache {
//allWebsiteDataTypes清除所有缓存
 NSSet *websiteDataTypes = [WKWebsiteDataStore allWebsiteDataTypes];

    NSDate *dateFrom = [NSDate dateWithTimeIntervalSince1970:0];

    [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:websiteDataTypes modifiedSince:dateFrom completionHandler:^{
        
    }];
}

自定义清除缓存

- (void)deleteWebCache {
/*
     在磁盘缓存上。
     WKWebsiteDataTypeDiskCache,
     
     html离线Web应用程序缓存。
     WKWebsiteDataTypeOfflineWebApplicationCache,
     
     内存缓存。
     WKWebsiteDataTypeMemoryCache,
     
     本地存储。
     WKWebsiteDataTypeLocalStorage,
     
     Cookies
     WKWebsiteDataTypeCookies,
     
     会话存储
     WKWebsiteDataTypeSessionStorage,
     
     IndexedDB数据库。
     WKWebsiteDataTypeIndexedDBDatabases,
     
     查询数据库。
     WKWebsiteDataTypeWebSQLDatabases
     */
    NSArray * types=@[WKWebsiteDataTypeCookies,WKWebsiteDataTypeLocalStorage];
    
    NSSet *websiteDataTypes= [NSSet setWithArray:types];
    NSDate *dateFrom = [NSDate dateWithTimeIntervalSince1970:0];

    [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:websiteDataTypes modifiedSince:dateFrom completionHandler:^{

    }];
}

但开发app必须要兼容所有iOS版本,可是iOS8,iOS7没有这种直接的方法,那该怎么办呢?
(iOS7.0只有UIWebView, 而iOS8.0是有WKWebView, 但8.0的WKWebView没有删除缓存方法。)
针对与iOS7.0、iOS8.0、iOS9.0 WebView的缓存,我们找到了一个通吃的办法:

NSString *libraryDir = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,   
NSUserDomainMask, YES)[0];
NSString *bundleId  =  [[[NSBundle mainBundle] infoDictionary]   
objectForKey:@"CFBundleIdentifier"];
NSString *webkitFolderInLib = [NSString stringWithFormat:@"%@/WebKit",libraryDir];
NSString *webKitFolderInCaches = [NSString   
stringWithFormat:@"%@/Caches/%@/WebKit",libraryDir,bundleId];
 NSString *webKitFolderInCachesfs = [NSString   
 stringWithFormat:@"%@/Caches/%@/fsCachedData",libraryDir,bundleId];

NSError *error;
/* iOS8.0 WebView Cache的存放路径 */
[[NSFileManager defaultManager] removeItemAtPath:webKitFolderInCaches error:&error];
[[NSFileManager defaultManager] removeItemAtPath:webkitFolderInLib error:nil];

/* iOS7.0 WebView Cache的存放路径 */
[[NSFileManager defaultManager] removeItemAtPath:webKitFolderInCachesfs error:&error];

如果文章帮到您,喜欢点个赞,谢谢您。

文章内容出错,记得留言,感激不尽。

相关文章

  • WKWebView如何清除缓存

    WKWebView如何清除缓存 iOS7.0只有UIWebView, 而iOS8.0是有WKWebView, 但8...

  • 清楚WKWebView缓存

    WKWebView清除缓存WKWebView,在iOS9以后提供了缓存管理类WKWebsiteDataStore,...

  • WKWebView清除缓存

    一. UIWebView清楚缓存 在使用WKWebView之前使用的是UIWebView, 清除缓存的方式两种:...

  • wkwebview清除缓存

    在UIWebView下,可以使用 [[NSURLCache sharedURLCache] removeAllCa...

  • WKWebView清除缓存

    最近用WKWebView的人貌似越来越多了,有很多人问这个怎么清除缓存,下面就是清除缓存的方法,大家一起来看看行不...

  • 清除wkwebView缓存

    #pragma mark- 清除webView缓存 - (void)clearWebViewCookies{ ...

  • WKWebView清除缓存

  • wkwebview清除缓存

    Tips: 以下方法仅针对iOS9.0以上版本可用,iOS1-iOS9.0之间版本可查询其他方法,由于版本老旧,在...

  • WkWebView 清除缓存 ios8

    WkWebView 清除缓存 ios8iOS8系统NSString *libraryDir = NSSearchP...

  • Swift Tip4

    1、iOS 开发textView不能从顶部显示: 2.WKWebView清除缓存: 3.webView设置缓存策略...

网友评论

  • 捕梦人:你些的这个通用方法运行起来报错呢. xcode 9.2 WKWeb 模拟器
  • 聪zero:如果我要保存一些数据到sessionStorage,可以做到吗
  • 易不服:写的真好,人美,技术好,当然我说的只是开发技术~我这么纯洁,没想其他的
    易不服:@多LV信源 不认识
    多LV信源:你认识她?

本文标题:WKWebView如何清除缓存

本文链接:https://www.haomeiwen.com/subject/dqjmqxtx.html