缓存--cache
发布时间
阅读量:
阅读量
一:MD5+Hash
采用MD5+hash技术作为哈希散列算法,在实际应用中无法进行逆运算即解码操作。任何输入经过MD5Hash处理后都将产生唯一且确定性的输出结果。
说明:使用第三方库 Hash
二:缓存
首先,在tmp文件夹中查找是否存在缓存文件。如果存在,则直接读取;否则不再进行网络请求。在完成网络请求后,则将经过MD5Hash处理的数据保存至tmp目录中。
#import "AZViewController.h"
#import "NSString+Hashing.h"
@interface AZViewController ()<NSURLConnectionDataDelegate>
{
NSMutableData *_mdata;
}
@end
@implementation AZViewController
- (void)viewDidLoad
{
[super viewDidLoad];
/**
MD5+hash,是哈希散列算法,是不可逆的,(不能逆运算,即解码)每个字符串经过MD5Hash算法之后,都会得到一个独一无二的值。
缓存: 先从tmp文件夹中寻找有没有缓存文件,如果有,直接读取,没有再去网络请求。网络请求之后,将其经过MD5Hash之后,写到tmp文件中去。
*/
NSString* url=@"http://images.takungpao.com/2013/0617/20130617012933641.jpg";
//路径为真则有缓存,为假则无缓存
NSString* path=[NSString stringWithFormat:@"%@/tmp/%@",NSHomeDirectory(),[url MD5Hash]];
NSFileManager* fm=[NSFileManager defaultManager];
if ([fm fileExistsAtPath:path]) {
//有缓存,直接读取
NSLog(@"缓存读取");
NSData* data=[NSData dataWithContentsOfFile:path];
}else{
//无缓存
NSURLRequest*request=[NSURLRequest requestWithURL:[NSURL URLWithString:url]];
[NSURLConnection connectionWithRequest:request delegate:self];
}
}
//多次调用
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
[_mdata appendData:data];
// NSLog(@"%@",NSString stringWithFormat:@"%@/tmp/%@",NSHomeDirectory(),[url MD5Hash);
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
//完成加载后,将其MD5Hash,保存到tmp文件夹中
//写本地
NSString* url=@"http://images.takungpao.com/2013/0617/20130617012933641.jpg";
[_mdata writeToFile:[NSString stringWithFormat:@"%@/tmp/%@",NSHomeDirectory(),[url MD5Hash]] atomically:NO];
}
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
NSLog(@"失败");
}
@end
全部评论 (0)
还没有任何评论哟~
