iOS - 清除Web界面的缓存

web第一次加载完毕之后,后期继续进同一个网页会从缓存中进,导致有时不能看到最新的web界面

iOS 9.0 以前清除web缓存

找出web缓存的路径 清空该路径

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];

NSError *error;
[[NSFileManager defaultManager] removeItemAtPath:webKitFolderInCaches error:&error];
[[NSFileManager defaultManager] removeItemAtPath:webkitFolderInLib error:nil];
iOS 9.0 以后

webKit出了清除缓存的API

OC
NSSet *websiteDataTypes = [NSSet setWithArray:@[
                                                 WKWebsiteDataTypeDiskCache,
                                                 WKWebsiteDataTypeOfflineWebApplicationCache,
                                                 WKWebsiteDataTypeMemoryCache,
                                                 WKWebsiteDataTypeLocalStorage,
                                                 WKWebsiteDataTypeCookies,
                                                 WKWebsiteDataTypeSessionStorage,
                                                 WKWebsiteDataTypeIndexedDBDatabases,
                                                 WKWebsiteDataTypeWebSQLDatabases
                                                 ]];
NSDate *dateFrom = [NSDate dateWithTimeIntervalSince1970:0];
[[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:websiteDataTypes modifiedSince:dateFrom completionHandler:^{
    // 结束回调
}];
Swift
let websiteDataTypes :Set = [
                              WKWebsiteDataTypeDiskCache,
                              WKWebsiteDataTypeOfflineWebApplicationCache,
                              WKWebsiteDataTypeMemoryCache,
                              WKWebsiteDataTypeLocalStorage,
                              WKWebsiteDataTypeCookies,
                              WKWebsiteDataTypeSessionStorage,
                              WKWebsiteDataTypeIndexedDBDatabases,
                              WKWebsiteDataTypeWebSQLDatabases
                              ]
let dateFrom = Date(timeIntervalSince1970: 0)
WKWebsiteDataStore.default().removeData(ofTypes: websiteDataTypes, modifiedSince: dateFrom, completionHandler: {
    print("clearH5WebCache 9.0")
})

removeDataOfTypes 方法

参数1:dataTypes: 指定删除的网站数据类型
参数2:date: 在此日期之后修改的所有网站数据将被删除。
参数3:completionHandler: 当网站数据被删除时调用的block。

type:

/ * 磁盘缓存。 * /
WKWebsiteDataTypeDiskCache,

/ * 内存中的缓存 。* /
WKWebsiteDataTypeMemoryCache,

/ * HTML离线Web应用程序缓存。 * /
WKWebsiteDataTypeOfflineWebApplicationCache,

/ * Cookies 缓存。 * /
WKWebsiteDataTypeCookies,

/ * HTML会话存储。 * /
WKWebsiteDataTypeSessionStorage,

/ * HTML本地存储。 * /
WKWebsiteDataTypeLocalStorage 

/ * IndexedDB数据库。 * /
WKWebsiteDataTypeIndexedDBDatabases,

/ * WebSQL数据库。 * /
WKWebsiteDataTypeWebSQLDatabases
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,241评论 4 61
  • “嘘~,一会进去你不要说话.”女孩进商场前,撤了撤男孩的衣角. “.....你想要什么我们就买呗。”男生沉默一会...
    卿本黑萌阅读 263评论 0 0
  • 一、学经汇报 学经日期:2017年5月8日 星期一天气:阴晴不定,间中有小雨宝贝年龄:4周岁4个月和1周岁1个月学...
    兜果妈阅读 616评论 2 3