Clearing UIWebView's Cache in Swift

后端 未结 5 1577
没有蜡笔的小新
没有蜡笔的小新 2020-12-30 03:45

I have a UIWebView inside my app. This UIWebView needs to be reloaded fully (i.e. clear all cache of images/HTML/cookies etc.) every time when viewDidLoad.

5条回答
  •  不思量自难忘°
    2020-12-30 04:13

    Swift 4:

    final class WebCacheCleaner {
    
        class func clear() {
            URLCache.shared.removeAllCachedResponses()
    
            HTTPCookieStorage.shared.removeCookies(since: Date.distantPast)
            print("[WebCacheCleaner] All cookies deleted")
    
            WKWebsiteDataStore.default().fetchDataRecords(ofTypes: WKWebsiteDataStore.allWebsiteDataTypes()) { records in
                records.forEach { record in
                    WKWebsiteDataStore.default().removeData(ofTypes: record.dataTypes, for: [record], completionHandler: {})
                    print("[WebCacheCleaner] Record \(record) deleted")
                }
            }
        }
    
    }
    
    // Usage
    WebCacheCleaner.clear()
    

    Older Versions:

    NSURLCache.sharedURLCache().removeAllCachedResponses()
    if let cookies = NSHTTPCookieStorage.sharedHTTPCookieStorage().cookies {
        for cookie in cookies {
            NSHTTPCookieStorage.sharedHTTPCookieStorage().deleteCookie(cookie)
        }
    }
    

提交回复
热议问题