来自WKWebView的Xamarin iOS清除缓存

时间:2016-05-02 19:05:24

标签: caching xamarin uiwebview xamarin.ios wkwebview

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

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

 NSUrlCache.SharedCache.RemoveAllCachedResponses ();
 NSUrlCache.SharedCache.MemoryCapacity = 0;
 NSUrlCache.SharedCache.DiskCapacity = 0;

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

1 个答案:

答案 0 :(得分:2)

从这个question看起来就像你为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}");});
    }
});

或者对于iOS 8,从ShingoFukuyama/WKWebViewTips您可以检查子目录中的库目录中的Cookie,Caches,WebKit已被删除。

  

iOS 8

     

经过多次反复试验,我得出以下结论:

     

使用NSURLCache和NSHTTPCookie以与在UIWebView上相同的方式删除cookie和缓存。

     

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

     

删除Library目录中的Cookies,Caches,WebKit子目录。

     

删除所有WKWebViews