如何使用ASIHTTPDownloadCache进行缓存?

时间:2012-04-09 11:04:29

标签: ios asihttprequest

在我的代码中,我正在下载应用程序生命周期开始时的所有图像:

[ASIHTTPRequest setDefaultCache:[ASIDownloadCache sharedCache]];

     NSURL *url = [NSURL URLWithString:[item imagePath]];
     __block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
     [request setCompletionBlock:^{
     //NSData *responseData = [request responseData];
     //[iw setImage: [UIImage imageWithData:responseData] forState:UIControlStateNormal];   
}];

[request setFailedBlock:^{
     // NSError *error = [request error];
     //[iw setImage:nil forState:UIControlStateNormal];         
}];

[request setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy];
     [request startSynchronous];
}];                

所有图像名称都是唯一的。而且它们并没有经常变化。我需要的是,在应用程序完成后也将图像保留在缓存中。当我再次打开应用程序时,它会从下载的缓存中读取它 可能吗?

1 个答案:

答案 0 :(得分:0)

这确实是可能的。您的缓存存储策略已经正确。

您还需要指定适当的缓存策略,请参阅http://allseeing-i.com/ASIHTTPRequest/How-to-use#about_cache_policies

这里重要的是要记住数据到期日期。在默认模式下,ASIHTTPRequest将关注到期日期,如果数据已过期,将重新加载数据。根据我的经验,服务器通常没有指定合适的到期日期,因此请考虑使用ASIOnlyLoadIfNotCachedCachePolicy

如果您愿意,您也可以自己指定失效日期(这对您来说可能更有趣,因为您的图像有时会发生变化)。按照我的链接,您需要的所有信息都在那里(请参阅“其他缓存相关功能”)。

哦,另一件事:ASIHTTPRequest已经不再是最新的了。开发商已放弃该项目。因此,ASIHTTPRequest不支持ARC等。如果可以,请切换到AFNetworking或RestKit等其他框架。