wkwebview清空html缓存,WKWebView如何清除缓存

本文介绍了如何在iOS 9.0及以上版本中清除WKWebView的缓存,包括使用`WKWebsiteDataStore`的API以及如何兼容iOS 7.0和8.0。通过删除特定的缓存文件夹,可以实现全平台的缓存清理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

WKWebView如何清除缓存

iOS7.0只有UIWebView, 而iOS8.0是有WKWebView, 但8.0的WKWebView没有删除缓存方法。iOS9.0之后就开始支持啦。

所以使用时候一定要适配iOS9.0以上

适用场景

清除WKWebView的缓存,让H5页面一刷新就更新至最新的页面

选择在合适逻辑加上以下代码:

清除所有的缓存

- (void)deleteWebCache {

//allWebsiteDataTypes清除所有缓存

NSSet *websiteDataTypes = [WKWebsiteDataStore allWebsiteDataTypes];

NSDate *dateFrom = [NSDate dateWithTimeIntervalSince1970:0];

[[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:websiteDataTypes modifiedSince:dateFrom completionHandler:^{

}];

}

自定义清除缓存

- (void)deleteWebCache {

/*

在磁盘缓存上。

WKWebsiteDataTypeDiskCache,

html离线Web应用程序缓存。

WKWebsiteDataTypeOfflineWebApplicationCache,

内存缓存。

WKWebsiteDataTypeMemoryCache,

本地存储。

WKWebsiteDataTypeLocalStorage,

Cookies

WKWebsiteDataTypeCookies,

会话存储

WKWebsiteDataTypeSessionStorage,

IndexedDB数据库。

WKWebsiteDataTypeIndexedDBDatabases,

查询数据库。

WKWebsiteDataTypeWebSQLDatabases

*/

NSArray * types=@[WKWebsiteDataTypeCookies,WKWebsiteDataTypeLocalStorage];

NSSet *websiteDataTypes= [NSSet setWithArray:types];

NSDate *dateFrom = [NSDate dateWithTimeIntervalSince1970:0];

[[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:websiteDataTypes modifiedSince:dateFrom completionHandler:^{

}];

}

但开发app必须要兼容所有iOS版本,可是iOS8,iOS7没有这种直接的方法,那该怎么办呢?

(iOS7.0只有UIWebView, 而iOS8.0是有WKWebView, 但8.0的WKWebView没有删除缓存方法。)

针对与iOS7.0、iOS8.0、iOS9.0 WebView的缓存,我们找到了一个通吃的办法:

NSString *libraryDir = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,

NSUserDomainMask, YES)[0];

NSString *bundleId = [[[NSBundle mainBundle] infoDictionary]

objectForKey:@"CFBundleIdentifier"];

NSString *webkitFolderInLib = [NSString stringWithFormat:@"%@/WebKit",libraryDir];

NSString *webKitFolderInCaches = [NSString

stringWithFormat:@"%@/Caches/%@/WebKit",libraryDir,bundleId];

NSString *webKitFolderInCachesfs = [NSString

stringWithFormat:@"%@/Caches/%@/fsCachedData",libraryDir,bundleId];

NSError *error;

/* iOS8.0 WebView Cache的存放路径 */

[[NSFileManager defaultManager] removeItemAtPath:webKitFolderInCaches error:&error];

[[NSFileManager defaultManager] removeItemAtPath:webkitFolderInLib error:nil];

/* iOS7.0 WebView Cache的存放路径 */

[[NSFileManager defaultManager] removeItemAtPath:webKitFolderInCachesfs error:&error];

如果文章帮到您,喜欢点个赞,谢谢您。

文章内容出错,记得留言,感激不尽。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值