美文网首页
iOS - 清除Web界面的缓存

iOS - 清除Web界面的缓存

作者: 壮骨 | 来源:发表于2018-01-03 16:55 被阅读0次

    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 - 清除Web界面的缓存

          本文链接:https://www.haomeiwen.com/subject/brzhnxtx.html