Xamarin iOS 从 WKWebView 清除缓存

Use*_*382 2 caching uiwebview xamarin.ios xamarin wkwebview

我正在执行以下操作以清除WkWebView. 我想知道如何确认缓存已清除

 var request = new NSUrlRequest (webURL, NSUrlRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData, 0);

 NSUrlCache.SharedCache.RemoveAllCachedResponses ();
 NSUrlCache.SharedCache.MemoryCapacity = 0;
 NSUrlCache.SharedCache.DiskCapacity = 0;
Run Code Online (Sandbox Code Playgroud)

有没有办法在发出请求时打印缓存

Iai*_*ith 5

从这个问题看来,您为 iOS 9 执行此操作(c# 版本),它将打印出哪些记录被删除:

var websiteDataTypes = new NSSet<NSString>(new []
{
    //Choose which ones you want to remove
    WKWebsiteDataType.Cookies,
    WKWebsiteDataType.DiskCache,
    WKWebsiteDataType.IndexedDBDatabases,
    WKWebsiteDataType.LocalStorage,
    WKWebsiteDataType.MemoryCache,
    WKWebsiteDataType.OfflineWebApplicationCache,
    WKWebsiteDataType.SessionStorage,
    WKWebsiteDataType.WebSQLDatabases
});

WKWebsiteDataStore.DefaultDataStore.FetchDataRecordsOfTypes (websiteDataTypes, (NSArray records) =>
{
    for (nuint i = 0; i < records.Count; i++) {
        var record = records.GetItem<WKWebsiteDataRecord> (i);

        WKWebsiteDataStore.DefaultDataStore.RemoveDataOfTypes (record.DataTypes, 
            new[] {record}, () => {Console.Write($"deleted: {record.DisplayName}");});
    }
});
Run Code Online (Sandbox Code Playgroud)

或者对于 iOS 8,从ShingoFukuyama/WKWebViewTips中您可以检查 Library 目录中的子目录 Cookies、Caches、WebKit 是否已删除。

iOS 8

经过多次尝试和错误,我得出以下结论:

使用 NSURLCache 和 NSHTTPCookie 删除 cookie 和缓存,就像在 UIWebView 上执行的操作一样。

如果您使用WKProccessPool,请重新初始化它。

删除Library目录下的Cookies、Caches、WebKit子目录。

删除所有 WKWebView