关闭

iOS如何实现网页缓存(实现webView的缓存)

标签: iOS网页缓存webView缓存iOS写入文件读取WKWebView缓存
7369人阅读 评论(2) 收藏 举报
分类:

楼主提供一个最简单的方法:

以下代码直接复制即可使用.


viewDidLoad里边代码如下:_urlStr为网页链接

    NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES) objectAtIndex:0];

    NSString * path = [cachesPathstringByAppendingString:[NSStringstringWithFormat:@"/Caches/%lu.html",(unsignedlong)[_urlStrhash]]];

    NSString *htmlString = [NSStringstringWithContentsOfFile:pathencoding:NSUTF8StringEncodingerror:nil];

    

    if (!(htmlString ==nil || [htmlString isEqualToString:@""])) {

        [_webViewloadHTMLString:htmlStringbaseURL:[NSURLURLWithString:_urlStr]];

    }else{

        NSURL *url = [NSURLURLWithString:_urlStr];

        NSURLRequest *request = [NSURLRequestrequestWithURL:url];

        [_webViewloadRequest:request];

        [selfwriteToCache];

    }


/**

 * 网页缓存写入文件

 */

- (void)writeToCache

{

    NSString * htmlResponseStr = [NSStringstringWithContentsOfURL:[NSURLURLWithString:_urlStr]encoding:NSUTF8StringEncodingerror:Nil];

    //创建文件管理器

    NSFileManager *fileManager = [[NSFileManageralloc]init];

    //获取document路径

    NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,      NSUserDomainMask, YES) objectAtIndex:0];

    [fileManager createDirectoryAtPath:[cachesPathstringByAppendingString:@"/Caches"]withIntermediateDirectories:YESattributes:nilerror:nil];

    //写入路径

    NSString * path = [cachesPathstringByAppendingString:[NSStringstringWithFormat:@"/Caches/%lu.html",(unsignedlong)[_urlStrhash]]];

    

    [htmlResponseStr writeToFile:pathatomically:YESencoding:NSUTF8StringEncodingerror:nil];

}


0
0
查看评论

UIWebview使用缓存并且保证实时性(iOS web资源缓存解决方案、异步后台更新。离线缓存)

webview缓存策略的介绍 使用webview加载页面的时候,最理想的情况是: 资源文件没有更新,就只加载缓存文件。如果有更新,则第一时间使用新的文件。 UIWebview中提供的缓存策略 NSURLRequestUseProtocolCachePolicy 缓存策略定义在 we...
  • leikezhu1981
  • leikezhu1981
  • 2017-03-30 18:30
  • 2771

iOS webview清除缓存

使用ios的webview会自动进行缓存,我们在开发的时候要记得清除Cookie和缓存。 在webview的关闭按钮中添加两个方法 /**webView退出方法*/ - (void)closeBtnAction:(UIButton *)button{      _we...
  • IT_201607
  • IT_201607
  • 2016-07-04 18:20
  • 13418

iOS开发 最新的NSURLProtocol之webView的离线缓存,缓存webView,离线加载

一:前言:项目中整个一tab页因为需求变成了加载webView,没网情况下会一片白。。很多APP无网显示的是一张图片,笔者强迫症,坚决做到最好的用户体验,于是缓存了整个webview;   1. 想通过加载HTMLSting字符串缓存webView是不可行, [self...
  • horisea
  • horisea
  • 2016-12-22 17:22
  • 3422

IOS UIWebView、WKWebView组件获取以及更新userAgent

一、UIWebView: //1)获取默认userAgent: UIWebView *uiwebView = [[UIWebView alloc] initWithFrame:CGRectZero]; NSString *oldUA = *uiwebView stringByEvaluat...
  • yeyu_wuhen
  • yeyu_wuhen
  • 2018-01-08 09:36
  • 132

iOS UIWebView或WKWebView只加载部分网页问题

因为 iOS 9 SDK 中默认不再支持访问非 HTTPS 的地址,我们需要进行支持http在 Info.plist 配置一下即可
  • ltw1228
  • ltw1228
  • 2018-01-13 10:02
  • 47

iOS-PAWebVIew基于WKWebView封装的框架

PAWebView 一. 前言       HybirdApp极速业扩展,低成本,高效率,跨平台,灵活易用,规避审核等特性深受各种平台青睐,尤其最近几年流行的响应式设计,HybirdApp都发挥淋漓尽致。如淘宝、美团、支付宝、微信都使用HybirdAp...
  • llyouss
  • llyouss
  • 2018-01-10 11:24
  • 216

【IOS开发】UIWebview 的缓存策略和验证,以及 web 相关

加载慢 缓存保证能够获得最新的文件 网络的检测确保正确 添加加载进度条 缓存策略(以科学的方法验证想法,以保证质量) NSURLRequestCachePolicy NSURLRequestUseProtocolCachePolicy Specifies that the ...
  • mangosnow
  • mangosnow
  • 2014-07-15 21:34
  • 24719

ios webview清除缓存

。 分类: ios2012-12-24 11:17 1013人阅读 评论(0) 收藏 举报 [cpp] view plaincopyprint? NSURLCache * cache ...
  • zhaoweixing1989
  • zhaoweixing1989
  • 2013-10-25 15:41
  • 30861

UIwebView实现html的离线缓存

1、html的缓存主要采取ASIHTTPRequest的缓存策略 (1)、设置缓存策略 //设置缓存 ASIDownloadCache *cache=[[ASIDownloadCache alloc] init]; self.myCache=cache; ...
  • TCH8502
  • TCH8502
  • 2015-03-20 16:05
  • 1820

手机端如何真正的解决页面缓存问题

问题重现 当我们需要开发手机端页面的时候,不得不在真机中调试 在微信中,可以通过微信提供的设置-通用-存储空间-清理微信(这是ios,android可能略不同)进行页面缓存的清理 在App中,就比较麻烦了,因为App一般不会像微信考虑的那么周全,给你提供清理页面缓存的途径 问题解决 ...
  • u011500781
  • u011500781
  • 2016-11-29 16:02
  • 5580
    个人资料
    • 访问:75381次
    • 积分:906
    • 等级:
    • 排名:千里之外
    • 原创:16篇
    • 转载:5篇
    • 译文:1篇
    • 评论:29条
    文章分类
    最新评论