2013-04-18 103 views
1

我不能形成問題標題,因爲這個問題是像描述性的。但我可以在這裏解釋清楚。這是與圖像緩存在iOS中。懶惰的圖像加載瓦特/

我的要求:我想創建一個列表,其中包含圖像視圖和從在線加載的圖像。此外,我需要實現該圖像緩存(因爲每次如果我加載fom在線這將花費太多的時間和網絡消費)。

注意:通常我們正在基於該圖像鏈接爲該圖像準備緩存鍵。

是否有任何其他方式來準備緩存鍵?

加載listview後,我可以點擊任何行,我會重定向到詳細信息頁面。在那個詳細頁面我有編輯選項,我可以更改該圖像。然後我重新提交給服務器。一旦我完成上傳,我強制關閉我的應用程序,並打開新的應用程序。在這種情況下,服務器側圖像鏈接沒有任何變化,因爲像http://www.uigarden.net/english/images/108.jpg

該圖像鏈接現在我加載的tableview比,所有圖像油炸從任一高速緩存或服務器的負載。 所以我們有兩種情況。

1)來自緩存: 如果沒有鏈接變化,並且該緩存文件夾中的鏈接ID可用,則將從緩存中加載。這裏 穆問題:我無法找到它已經編輯或不編輯。所以我無法加載新編輯的圖像,因爲我已經基於鏈接緩存了該圖像。

2)如果該鏈接的密鑰在緩存中不可用,則直接鏈接。

我們如何區分它是編輯圖像還是舊圖像?

請幫我

+0

[Last-Modified](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html),當然還有緩存的過期時間。 – 2013-04-18 07:56:08

回答

1

AFNetWorking與NSURLCache組合是偉大的

+1

或與SYCache組合使用 – CarlJ 2013-04-18 08:05:47

1

解決方案是 - SDWebImage

你只需要#import <SDWebImage/UIImageView+WebCache.h>到你的項目,你也可以定義佔位符時,圖像正在使用此代碼下載:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
     static NSString *CellIdentifier; 
     CustomCell *cell = [tableview dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 

     MyObject *object = (MyObject *)[self.list.array objectAtIndex:indexPath.row]; 

     [cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"] 
         placeholderImage:[UIImage imageNamed:@"placeholder.png"]]; 

     return cell; 
} 

它還緩存下載的圖像,併爲您提供出色的性能。