美文网首页
清楚WKWebView缓存

清楚WKWebView缓存

作者: 太平洋_cfd2 | 来源:发表于2022-01-13 17:26 被阅读0次

    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
    

    相关文章

      网友评论

          本文标题:清楚WKWebView缓存

          本文链接:https://www.haomeiwen.com/subject/yooncrtx.html