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