懒惰图像加载w /缓存

时间:2013-04-18 07:32:39

标签: ios

我无法形成问题标题,因为这个问题就像是描述性的。但我可以在这里解释清楚。这与ios中的图像缓存有关。

我的要求:我想创建一个包含图像视图的列表,以及从在线加载的图像。此外,我需要为该图像实现缓存(因为每次如果我在线加载它将花费太多时间和网络消耗)。

注意:通常我们会根据该图片链接为该图片准备缓存键。

还有其他方法可以准备缓存密钥吗?

加载listview后,我可以点击任意一行,我将重定向到详细信息页面。在该详细页面中,我有编辑选项,我可以更改该图像。我重新提交给服务器。一旦我完成上传,我强制关闭我的应用程序,我打开新的应用程序。在这种情况下,在服务器端,图像链接没有变化,因为像http://www.uigarden.net/english/images/108.jpg 这样的图像链接

现在我加载了tableview而不是从所有缓存或服务器加载的图片。 所以我们有两个案例。

1)从缓存中:     如果链接没有变化,并且缓存文件夹中的链接ID可用于从缓存加载。这里 Mu问题:我无法找到已编辑或未编辑的内容。所以我无法加载新编辑的图像,因为我已经根据链接缓存了该图像。

2)如果基于链接的密钥在缓存中不可用,则从直接链接。

我们如何区分是编辑图像还是旧图像?

请帮帮我

2 个答案:

答案 0 :(得分:1)

与NSURLCache组合的AFNetWorking很棒

答案 1 :(得分: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;
}

它还可以缓存下载的图像并为您提供出色的性能。