Advertisement

缓存--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)

还没有任何评论哟~