WKWebView清除缓存方法

第一种方法是手动清理所有缓存

func clearCache() {
        let dataStore = WKWebsiteDataStore.default()
        dataStore.fetchDataRecords(ofTypes: WKWebsiteDataStore.allWebsiteDataTypes(), completionHandler: { (records) in
            for record in records{
                //清除本站的cookie
               if record.displayName.contains("baidu.com"){
                //这个判断注释掉的话是清理所有的cookie
                    WKWebsiteDataStore.default().removeData(ofTypes: record.dataTypes, for: [record],       completionHandler: {
                    //清除成功
                    print("清除成功\(record)")
                })
               }
            }
        })
    }

记得 import WebKit

第二种方法就是根据NSURLRequestCachePolicy作调整

1.//默认的cache policy,使用Protocol协议定义
NSURLRequestUseProtocolCachePolicy NSURLRequest
2.// 忽略缓存直接从原始地址下载。
NSURLRequestReloadIgnoringCacheData
3.只使用cache数据,如果不存在cache,请求失败;用于没有建立网络连接离线模式
NSURLRequestReturnCacheDataDontLoad
4.只有在cache中不存在data时才从原始地址下载                                  
NSURLRequestReturnCacheDataElseLoad      
5.忽略本地和远程的缓存数据,直接从原始地址下载,与NSURLRequestReloadIgnoringCacheData类似               
NSURLRequestReloadIgnoringLocalAndRemoteCacheData         
6.验证本地数据与远程数据是否相同,如果不同则下载远程数据,否则使用本地数据                  
NSURLRequestReloadRevalidatingCacheData                              

let webView = WKWebView(frame: CGRect.zero, configuration: WKWebViewConfiguration())
let url = "www.baidu.com"
let request = URLRequest(url: url, cachePolicy: .reloadIgnoringCacheData, timeoutInterval: 10.0)
            webView.load(request)

你可能感兴趣的:(WKWebView清除缓存方法)