NSURLRequest的缓存机制

2018-01-05  本文已影响0人  Johnny_Wu

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];//加载

 }

上一篇下一篇

猜你喜欢

热点阅读