【问题标题】:How to do Caching with ASIHTTPDownloadCache?如何使用 ASIHTTPDownloadCache 进行缓存?
【发布时间】:2012-04-09 11:04:28
【问题描述】:

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

[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];
}];                

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

【问题讨论】:

    标签: ios asihttprequest


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 你好。我搬到了 AFNetworking。现在,我应该怎么做才能将应用程序启动中的所有法师加载到缓存中,然后从缓存中在应用程序内部使用它们?
    • 您可以使用 NSURLCache(它与 UIImageView(AFNetworking) 类别一起使用),或手动拉取持久缓存模块(请参阅此处的讨论:stackoverflow.com/questions/7529258/…)。如果您在使用 AFNetworking/NSURLCache 缓存时遇到问题,请在 SO 上搜索或打开另一个 - 正确标记 - 问题
    猜你喜欢
    • 2020-04-22
    • 1970-01-01
    • 2019-02-03
    • 2012-04-13
    • 2020-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-25
    相关资源
    最近更新 更多