WKWebView缓存的那些事
2017-04-21 本文已影响227人
向晚forever
这几天app内嵌的H5页面后台更新了内容,但是app里面H5页面没有及时的更新。
以前也遇到过,基本都是加一个随机数或者时间戳去处理。
今天就针对这个问题解决下。
WKWebView的清除缓存API(iOS9以上使用)
// 不能使用系统提供的api,使用这个二级页面更新不了
// if ([[UIDevice currentDevice].systemVersion floatValue] >= 9.0) {
// NSSet *types = [NSSet setWithArray:@[
// WKWebsiteDataTypeDiskCache,
// WKWebsiteDataTypeOfflineWebApplicationCache,
// WKWebsiteDataTypeMemoryCache,
// WKWebsiteDataTypeLocalStorage,
// WKWebsiteDataTypeCookies,
// WKWebsiteDataTypeSessionStorage,
// WKWebsiteDataTypeIndexedDBDatabases,
// WKWebsiteDataTypeWebSQLDatabases
// ]];
// NSDate *dateForm = [NSDate date];
// [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:types modifiedSince:dateForm completionHandler:^{
// DGLog(@"wkwebView chear cache over");
//
// if (completion) {
// completion(YES);
// }
//
// }];
// }
// else{
dispatch_async(dispatch_get_global_queue(0, 0), ^{
NSString *libraryPath = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).firstObject;
DGLog(@"libraryPath:%@",libraryPath);
//必须把这文件夹全部删除
NSString *webkitFolderInLib = [libraryPath stringByAppendingString:@"/WebKit"];
NSString *cachesFolderInLib = [libraryPath stringByAppendingString:@"/Caches"];
[[NSFileManager defaultManager] removeItemAtPath:webkitFolderInLib error:nil];
[[NSFileManager defaultManager] removeItemAtPath:cachesFolderInLib error:nil];
dispatch_sync(dispatch_get_main_queue(), ^{
if (completion) {
completion(YES);
}
});
});
//}
清除缓存的时机。
可以和后台达成一个协议,当后台更新了数据,给客户端一个通知。然后客户端就去清除缓存。