WKWebView清除缓存
WKWebView清除缓存只能iOS9使用,低于iOS9运行会崩溃哦!所以,为了适配iOS7和iOS8,还是要做版本判断
if ([[[UIDevice currentDevice]systemVersion]intValue ] >= 9.0) {
NSArray * types =@[WKWebsiteDataTypeMemoryCache,WKWebsiteDataTypeDiskCache]; // 9.0之后才有的
/*
NSArray *type = @[WKWebsiteDataTypeDiskCache, // 磁盘缓存
WKWebsiteDataTypeMemoryCache, // 内存缓存
WKWebsiteDataTypeOfflineWebApplicationCache, // HTML 离线 Web 应用程序缓存。
WKWebsiteDataTypeCookies, // Cookies
WKWebsiteDataTypeSessionStorage, // HTML 会话存储
WKWebsiteDataTypeLocalStorage, // HTML 本地存储
WKWebsiteDataTypeWebSQLDatabases, // WebSQL 数据库
WKWebsiteDataTypeIndexedDBDatabases, // IndexedDB 数据库
];
*/
NSSet *websiteDataTypes = [NSSet setWithArray:types];
NSDate *dateFrom = [NSDate dateWithTimeIntervalSince1970:0];
[[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:websiteDataTypes modifiedSince:dateFrom completionHandler:^{
}];
}else{
NSString *libraryPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES) objectAtIndex:0];
NSString *cookiesFolderPath = [libraryPath stringByAppendingString:@"/Cookies"];
NSLog(@"%@", cookiesFolderPath);
NSError *errors;
[[NSFileManager defaultManager] removeItemAtPath:cookiesFolderPath error:&errors];
}
WKWebView是iOS8之后出现的,相较于UIWebView,WKWebView占用的内存更小,还有一些其他的优化。但是如果我们不去主动清理webView产生的缓存,两者都会存在缓存这个问题。比如说一个网页改了一些内容,如果不清理缓存,可能很长一段时间我们都没办法看到新的内容,唯一的办法是卸载重装。
在加载webView的ViewController的viewDidLoad中实现这些代码,可以保证每次加载的webView的内容都是最新的。