美文网首页
NSURLRequest的缓存机制

NSURLRequest的缓存机制

作者: Johnny_Wu | 来源:发表于2018-01-05 16:06 被阅读0次

    NSURLRequest可以实现网页缓存,下面实现了网页有更新时候,重新从网络获取,没有更新就使用本地缓存,如果没有网络也使用本地缓存。

    UIWebView缓存策略

    1、NSURLRequestUseProtocolCachePolicy NSURLRequest            默认的cache policy,使用Protocol协议定义。

    2、NSURLRequestReloadIgnoringCacheData                                忽略缓存直接从原始地址下载。

    3、NSURLRequestReturnCacheDataDontLoad                              只使用cache数据,如果不存在cache,请求失败;用于没有建立网络连接离线模式

    4、NSURLRequestReturnCacheDataElseLoad                                只有在cache中不存在data时才从原始地址下载。

    5、NSURLRequestReloadIgnoringLocalAndRemoteCacheData        忽略本地和远程的缓存数据,直接从原始地址下载,与NSURLRequestReloadIgnoringCacheData类似。

    6、NSURLRequestReloadRevalidatingCacheData                          验证本地数据与远程数据是否相同,如果不同则下载远程数据,否则使用本地数据

    具体代码:

    infoView为UIWebView的对象实例。

    NSURLCache *urlCache = [NSURLCache sharedURLCache];

    [urlCache setMemoryCapacity:1*1024*1024];

    NSURL* url = [NSURL URLWithString:urlStr];//创建URL

    NSURLRequest* request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadRevalidatingCacheData timeoutInterval:20.0];

    if([XlabTools isConnectWebUrl:urlStr])     //判断网址是否可以访问

    {

            [infoView loadRequest:request];//加载

    }

    else        //如果没有网络,就直接从本地获取

    {

            request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReturnCacheDataDontLoad timeoutInterval:10.0];

            NSCachedURLResponse *response =

            [urlCache cachedResponseForRequest:request];

            if(response!=nil)  //有缓存,防止在没有缓存的时候崩溃

                [infoView loadRequest:request];//加载

     }

    相关文章

      网友评论

          本文标题:NSURLRequest的缓存机制

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