2014-01-20 3 views
0

У меня есть приложение UIWebView в моем приложении iOS, которое загружает разные URL-адреса в зависимости от предыдущего действия. Я не буду загружать эти страницы как можно быстрее. Я нашел класс EGOCache (source), и я получил его для хранения cacheData в каталоге/Caches. Но я не уверен, как получить этот кеш, чтобы загрузить его быстрее, я не вижу разницы. Может быть, использовать NSCache? Что я пропустил?Как использовать EGOCache для кэширования и загрузки страницы быстрее

- (void)webViewDidStartLoad:(UIWebView *)webView { 
     if (webView_1) { 


     NSString *urlAddress = @"http://www.apple.com"; 
     NSURL *url = [NSURL URLWithString:urlAddress]; 
     NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval: 10.0]; 
     [webView1 loadRequest:request]; 

     NSData *data0 = [NSURLConnection sendSynchronousRequest: 
         [NSURLRequest requestWithURL:url] 
              returningResponse:nil 
                 error:nil]; 

     [[EGOCache globalCache] setData:data0 forKey:@"webCache"]; 
     } 
    } 

Спасибо!

ответ

2

Хорошо, поэтому я сделал свой собственный метод, и я получил его работу. Все, что вам нужно сделать, это указать адрес URL. См. Этот код:

-(void)loadPage:(NSString *)urlAddress { 

    NSURL *url = [NSURL URLWithString:urlAddress]; 
    NSString* cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
    NSString* file = [cachePath stringByAppendingPathComponent:@"/xxx.APPNAME/EGOCache/EGOCache.plist"]; 
    NSDictionary *dict =[NSDictionary dictionaryWithContentsOfFile:file]; 

    if ([dict objectForKey:urlAddress]) 
    { 
     NSData *data = [[EGOCache globalCache] dataForKey:urlAddress]; 
     data = [NSURLConnection sendSynchronousRequest: 
       [NSURLRequest requestWithURL:url] 
            returningResponse:nil 
               error:nil]; 
     NSLog(@"loading from cache %@",urlAddress); 

    }else{ 
     NSData *data = [NSURLConnection sendSynchronousRequest: 
         [NSURLRequest requestWithURL:url] 
               returningResponse:nil 
                  error:nil]; 
     [[EGOCache globalCache] setData:data forKey:urlAddress]; 
     NSLog(@"saving cache %@",urlAddress); 
     [[EGOCache globalCache] setDefaultTimeoutInterval:60*60*24*4]; //timeout (4 days) 
    } 
    NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval: 10.0]; 

    [webView loadRequest:request]; 
} 
0

Чтобы выполнить то, что вы пытаетесь реализовать, вам потребуется подкласс NSURLCache и реализовать необходимые методы, при этом ваша реализация будет доступна для доступа к EGOCache. UIWebView и NSURLConnection используют NSURLCache для кэширования данных. После того, как вы внесете свой собственный подклас, вы должны указать экземпляр этого кеша URL вашего приложения, используя setSharedCache:.

+0

У вас есть какой-либо код или учебник, который вы можете мне показать? Я новичок жаль ... – Tibbe

Смежные вопросы