清除WKWebView的缓存

Posted 纯情的小公鸡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了清除WKWebView的缓存相关的知识,希望对你有一定的参考价值。

清除WKWebView的缓存

OC写法:     swift写法再下下面。

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

 

直接上代码~!~~

要区分ios9.0和8.0两种

- (void)deleteWebCache {

    

    if ([[UIDevice currentDevice].systemVersion floatValue] >= 9.0) {

        NSSet *websiteDataTypes

        = [NSSet setWithArray:@[

                                WKWebsiteDataTypeDiskCache,

                                //WKWebsiteDataTypeOfflineWebApplicationCache,

                                WKWebsiteDataTypeMemoryCache,

                                //WKWebsiteDataTypeLocalStorage,

                                //WKWebsiteDataTypeCookies,

                                //WKWebsiteDataTypeSessionStorage,

                                //WKWebsiteDataTypeIndexedDBDatabases,

                                //WKWebsiteDataTypeWebSQLDatabases

                                ]];

        //// All kinds of data

        //NSSet *websiteDataTypes = [WKWebsiteDataStore allWebsiteDataTypes];

        //// Date from

        NSDate *dateFrom = [NSDate dateWithTimeIntervalSince1970:0];

        //// Execute

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

            // Done

        }];

 

    } else {

        

        NSString *libraryPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) objectAtIndex:0];

        NSString *cookiesFolderPath = [libraryPath stringByAppendingString:@"/Cookies"];

        NSError *errors;

        [[NSFileManager defaultManager] removeItemAtPath:cookiesFolderPath error:&errors];

        

    }

}

 

 

swift:

// MARK: - 清空缓存

    func ClearCache() {

 

        let dateFrom: NSDate = NSDate.init(timeIntervalSince1970: 0)

 

        if #available(iOS 9.0, *) {

            let websiteDataTypes: NSSet = WKWebsiteDataStore.allWebsiteDataTypes()

            WKWebsiteDataStore.defaultDataStore().removeDataOfTypes(websiteDataTypes as! Set<String>, modifiedSince: dateFrom) {

                print("清空缓存完成")

            }

        } else {

              let libraryPath = NSSearchPathForDirectoriesInDomains(.LibraryDirectory, .UserDomainMask, true)[0]

            let cookiesFolderPath = libraryPath.stringByAppendingString("/Cookies")

            let errors: NSError

            try? NSFileManager.defaultManager().removeItemAtPath(cookiesFolderPath)

        }

    }

以上是关于清除WKWebView的缓存的主要内容,如果未能解决你的问题,请参考以下文章

如何清除 UIWebView/WKWebView 的内容?

如何清除包含在重复使用的自定义 UITableViewCell 中的 WKWebview?

WKWebView 最大缓存对象大小

IOS - 如何从 WKWebView 获取缓存的资源?

iOS - WKWebView - 在后续应用程序启动期间缓存应用程序的先前状态

如何使用缓存使用 SfSafariView 或 WKWebView 更快地加载网站?