美文网首页
WKWebView缓存的那些事

WKWebView缓存的那些事

作者: 向晚forever | 来源:发表于2017-04-21 17:07 被阅读227次

    这几天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);
                    }
                });
            });
        //}
    

    清除缓存的时机。
    可以和后台达成一个协议,当后台更新了数据,给客户端一个通知。然后客户端就去清除缓存。

    相关文章

      网友评论

          本文标题:WKWebView缓存的那些事

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