第一种方法是手动清理所有缓存
🌰
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)