在我的代码中,我正在下载应用程序生命周期开始时的所有图像:
[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];
}];
所有图像名称都是唯一的。而且它们并没有经常变化。我需要的是,在应用程序完成后也将图像保留在缓存中。当我再次打开应用程序时,它会从下载的缓存中读取它 可能吗?
答案 0 :(得分:0)
这确实是可能的。您的缓存存储策略已经正确。
您还需要指定适当的缓存策略,请参阅http://allseeing-i.com/ASIHTTPRequest/How-to-use#about_cache_policies
这里重要的是要记住数据到期日期。在默认模式下,ASIHTTPRequest将关注到期日期,如果数据已过期,将重新加载数据。根据我的经验,服务器通常没有指定合适的到期日期,因此请考虑使用ASIOnlyLoadIfNotCachedCachePolicy
。
如果您愿意,您也可以自己指定失效日期(这对您来说可能更有趣,因为您的图像有时会发生变化)。按照我的链接,您需要的所有信息都在那里(请参阅“其他缓存相关功能”)。
哦,另一件事:ASIHTTPRequest已经不再是最新的了。开发商已放弃该项目。因此,ASIHTTPRequest不支持ARC等。如果可以,请切换到AFNetworking或RestKit等其他框架。