浅谈iOS中WKWebView和UIWebView的清除缓存问题

最近产品经理在验收项目,在验收过程中发现了一个问题:网页中的数据存在缓存

网页中加载的是一张图片,在后台将加载的图片换掉的时候再在App中加载此网页,发现展示的图片还是之前的图片,并没有更新,而且多次重新加载网页显示的还是之前的图片,说明缓存很严重。于是查阅资料进行缓存的清除。

先说说UIWebView中缓存的清除,代码只有一句:

 [[NSURLCachesharedURLCache]removeAllCachedResponses];

再说WKWebView中缓存的清除:

  NSArray * types =@[WKWebsiteDataTypeMemoryCache,WKWebsiteDataTypeDiskCache];

   NSSet *websiteDataTypes = [NSSetsetWithArray:types];

  NSDate *dateFrom = [NSDatedateWithTimeIntervalSince1970:0];

    

    

   [[WKWebsiteDataStoredefaultDataStore]removeDataOfTypes:websiteDataTypesmodifiedSince:dateFromcompletionHandler:^{

        

        

    }];

其中types数组中的内容是可以选择的一些类型,还是选择清除cookie。    

注意:只有在iOS9之后WKWebView才有清除缓存的方法,在写代码的时候切记对系统版本进行判断。

    }];

 if ([[[UIDevicecurrentDevice]systemVersion]intValue ] >8) {

        NSArray * types =@[WKWebsiteDataTypeMemoryCache,WKWebsiteDataTypeDiskCache]// 9.0之后才有的 

        NSSet *websiteDataTypes = [NSSetsetWithArray:types];

        NSDate *dateFrom = [NSDatedateWithTimeIntervalSince1970:0];

        

        [[WKWebsiteDataStoredefaultDataStore]removeDataOfTypes:websiteDataTypesmodifiedSince:dateFromcompletionHandler:^{

            

        }];

    }else{

        NSString *libraryPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES) objectAtIndex:0];

        

        NSString *cookiesFolderPath = [libraryPathstringByAppendingString:@"/Cookies"];

        NSLog(@"%@", cookiesFolderPath);

        NSError *errors;

        

        [[NSFileManagerdefaultManager]removeItemAtPath:cookiesFolderPatherror:&errors];

    }

   


增加内容:

使用UIWebView加载页面的时候最理想的情况是:资源文件没有更新,就只加载缓存文件,如果有更新就第一时间使用新的文件。

我们可以使用一个类来实现,这个类也是我在网上找的,类名:

JWNetAutoCache,大家也可以点进去看这个类实现该效果的一个思路。


增加内容:

在iOS8上还会导致崩溃的代码:

/*

     导致iOS8奔溃的代码

     */

    self.webView.allowsBackForwardNavigationGestures = YES;

    self.webView.allowsBackForwardNavigationGestures = NO;

这是属性表示是否开启网页左、右滑前进倒退。





  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值