关闭

WKWebView加载Http页面更新后不刷新问题及解决办法

7674人阅读 评论(0) 收藏 举报

WKWebView在加载HTTP的H5页面,由于没有HTTPS的加密传输,所以会在本地缓存CSS样式、Html网页(类似电脑上下载到本地的网页)等内容,所以在后台更改H5页面之后,APP由于缓存的问题不能展示更改后的页面

iOS7的系统继续使用UIWebView加载不会出现这种问题,

iOS9也可以通过WBWebSiteDataStore的对象方法:

- (void)removeDataOfTypes:(NSSet<NSString *> *)websiteDataTypes modifiedSince:(NSDate *)date completionHandler:(void (^)(void))completionHandler;

去清理应用里所有通过WKWebView加载过的网页缓存

但是如果对于iOS8来说,WBWebSiteDataStore类无法使用,就会出现无法清理清理缓存的问题


可以用如下的方法去清理存储在APP里面的网页缓存,在WebView的dealloc方法里调用即可

iOS9也同样可以调用这个方法,因为调用系统的WBWe'bSiteDataStore会清理所有的缓存,包括Bootstrap、网页图片等缓存,会影响下次加载的效率

方法如下:

/** 清理缓存的方法,这个方法会清除缓存类型为HTML类型的文件*/

- (void)clearCache

{

    /* 取得Library文件夹的位置*/

    NSString *libraryDir =NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask, YES)[0];

    /* 取得bundle id,用作文件拼接用*/

    NSString *bundleId  =  [[[NSBundlemainBundle] infoDictionary]objectForKey:@"CFBundleIdentifier"];

    /*

     * 拼接缓存地址,具体目录为App/Library/Caches/你的APPBundleID/fsCachedData

     */

    NSString *webKitFolderInCachesfs = [NSStringstringWithFormat:@"%@/Caches/%@/fsCachedData",libraryDir,bundleId];

    

    NSError *error;

    /* 取得目录下所有的文件,取得文件数组*/

    NSFileManager *fileManager = [NSFileManagerdefaultManager];

    NSArray *fileList = [[NSArrayalloc] init];

    //fileList便是包含有该文件夹下所有文件的文件名及文件夹名的数组

    fileList = [fileManager contentsOfDirectoryAtPath:webKitFolderInCachesfserror:&error];

    

    HLog(@"路径==%@,fileList%@",webKitFolderInCachesfs,fileList);

    /* 遍历文件组成的数组*/

    for(NSString * fileNamein fileList){

        /* 定位每个文件的位置*/

        NSString * path = [[NSBundlebundleWithPath:webKitFolderInCachesfs]pathForResource:fileNameofType:@""];

        /* 将文件转换为NSData类型的数据*/

        NSData * fileData = [NSDatadataWithContentsOfFile:path];

        /* 如果FileData的长度大于2,说明FileData不为空*/

        if(fileData.length >2){

            /* 创建两个用于显示文件类型的变量*/

            int char1 =0;

            int char2 =0;

            

            [fileData getBytes:&char1range:NSMakeRange(0,1)];

            [fileData getBytes:&char2range:NSMakeRange(1,1)];

            /* 拼接两个变量*/

            NSString *numStr = [NSStringstringWithFormat:@"%i%i",char1,char2];

           /* 如果该文件前四个字符是6033,说明是Html文件,删除掉本地的缓存*/

            if([numStrisEqualToString:@"6033"]){

                [[NSFileManagerdefaultManager] removeItemAtPath:[NSStringstringWithFormat:@"%@/%@",webKitFolderInCachesfs,fileName]error:&error];

                continue;

            }

            

        }

    }

}


0
0
查看评论

WKWebView替换WebView体会总结

一.引言 最近应公司要求,把项目里用到的UIWebView全都用WKWebView替换掉。于是就去研究了WKWebview,加上在使用中遇到的一些问题加以总结,如有不足之处,还望指出,本人将会加以修改。 UIWebView自iOS2就有,WKWebView从iOS8才有,毫无疑问WKWebView...
  • zhaojinqiang12
  • zhaojinqiang12
  • 2016-11-04 11:35
  • 2547

WKWebView缓存的那点事

WKWebView自从推出至今,一直有不断地吐槽伴随,诚然,WKWebView具有很多好处:速度更快、内存更少,但是它也有一些坑 通过这几天的研究,总结一下遇到的关于WKWebView缓存的一些事情 1、二级页面跳转时仍然不可设置缓存策略 用过UIWebView或WKWebView的朋友都知道,...
  • u013583789
  • u013583789
  • 2016-08-05 15:03
  • 14694

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

最近产品经理在验收项目,在验收过程中发现了一个问题:网页中的数据存在缓存。 网页中加载的是一张图片,在后台将加载的图片换掉的时候再在App中加载此网页,发现展示的图片还是之前的图片,并没有更新,而且多次重新加载网页显示的还是之前的图片,说明缓存很严重。于是查阅资料进行缓存的清除。 先说说UIWebV...
  • u010105969
  • u010105969
  • 2016-12-30 15:06
  • 6646

WKWebView从入门到趟坑

转载自: http://www.jianshu.com/p/90a90bd13aac UIWebView 之痛 开发App的过程中,常常会遇到在App内部加载网页,通常用UIWebView加载。而这个自iOS2.0开始使用的Web容器一直是开发的心病:加载速度慢,占用内存多,优...
  • chenyong05314
  • chenyong05314
  • 2016-12-19 10:07
  • 18837

WKWebView的简单介绍和使用

WKWebView的简单介绍和使用
  • u011096206
  • u011096206
  • 2016-01-21 19:10
  • 8753

WKWebView使用遇到的一些坑

#WKWebView使用遇到的坑 ###简介 使用WKWebView一段时间,发现它和UIWebView的一些区别之处,有一写遇到的坑,现在对处理方式做了个小总结,现分享给大家. ###区别 ####1.EvaluateJavaScript方法为异步 - UIWebview: 在``...
  • j_AV_a
  • j_AV_a
  • 2016-08-09 10:30
  • 11973

WKWebView 的使用和踩过的坑

iOS8之后,苹果推出了WebKit这个框架,用来替换原有的UIWebView,新的控件优点多多,不一一叙述。由于一直在适配iOS7,就没有去替换,现在仍掉了iOS7,以为很简单的就替换过来了,然而在替换的过程中,却遇到了很多坑。还有一点就是原来写过一篇文章 Objective-C与Jav...
  • yuanmengong886
  • yuanmengong886
  • 2017-02-13 17:38
  • 4001

iOS开发---WKWebView加载不受信任的https

1.描述:因公司域名临时出现问题,所以项目中引用到了IP地址加端口号去请求数据,因而造成在wkwebView中某些网址打不开,查看错误是因为服务器证书无效,实际就是不受信任;2.解决办法:在plist文件中设置Allow Arbitrary Loads in Web Content 置为 YES,并...
  • wz_yinglong
  • wz_yinglong
  • 2017-08-23 16:04
  • 1944

WKWebView常见功能及如何返回上级界面

1、WKWebView的简单初始化- (WKWebView *)webView{ if (_webView == nil) { _webView = [[WKWebView alloc] initWithFrame:self.sContentView.bounds]; ...
  • u013094208
  • u013094208
  • 2016-07-22 10:49
  • 9149

微信WKWebview内核点返回,页面不刷新

ajax请求的时候延迟500毫秒加载,setTimeout(function(){},500)  cache:flase;
  • bbsyi
  • bbsyi
  • 2017-09-27 10:59
  • 441
    个人资料
    • 访问:57765次
    • 积分:546
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:0篇
    • 译文:3篇
    • 评论:13条
    最新评论