清楚WKWebView缓存
2022-01-13 本文已影响0人
太平洋_cfd2
WKWebView清除缓存WKWebView,在iOS9以后提供了缓存管理类WKWebsiteDataStore,iOS9以前只能手动移除文件WKWebsiteDataStore 提供了API获取web缓存数据类型[WKWebsiteDataStore allWebsiteDataTypes];WKWebView支持的缓存类型:
清除WKWebView的缓存
在磁盘缓存上。
WKWebsiteDataTypeDiskCache,
html离线Web应用程序缓存。
WKWebsiteDataTypeOfflineWebApplicationCache,
内存缓存。
WKWebsiteDataTypeMemoryCache,
本地存储。
WKWebsiteDataTypeLocalStorage,
Cookies
WKWebsiteDataTypeCookies,
会话存储
WKWebsiteDataTypeSessionStorage,
IndexedDB数据库。
WKWebsiteDataTypeIndexedDBDatabases,
查询数据库。
WKWebsiteDataTypeWebSQLDatabases
WKWebView 清除指定类型缓存:
let websiteDataTypes: Set<String> = [WKWebsiteDataTypeDiskCache, WKWebsiteDataTypeMemoryCache, WKWebsiteDataTypeLocalStorage, WKWebsiteDataTypeCookies]
//清除所有的web信息
let websiteDataTypes = WKWebsiteDataStore.allWebsiteDataTypes()
let dateFrom = Date.init(timeIntervalSince1970: 0)
WKWebsiteDataStore.default().removeData(ofTypes: websiteDataTypes, modifiedSince: dateFrom) {
var request = URLRequest(url: self.url)
request.cachePolicy = .reloadIgnoringLocalAndRemoteCacheData
self.webView.load(request)
}
参考链接:https://juejin.cn/post/6850418117500370958
/// Location.reload() 方法用来刷新当前页面。该方法只有一个参数,当值为 true 时,将强制浏览器从服务器加载页面资源,当值为 false 或者未传参时,浏览器则可能从缓存中读取页面。
webView.evaluateJavaScript("window.location.reload(true)") { data, errer in
var request = URLRequest(url: self.url)
request.cachePolicy = .reloadIgnoringCacheData
self.webView.load(request)
};
ps: https://stackoverflow.com/questions/27105094/how-to-remove-cache-in-wkwebview