清楚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
上一篇下一篇

猜你喜欢

热点阅读