使用afnetworking api的nsurlcache图像



我有一个正在从服务器下载图像的应用。这些图像约为56 kb,其中至少有30个。有时用户没有连接或边缘连接(拨号)。

我在我的appdelegate.h中使用nsurlcache:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {   
    int cacheSizeMemory = 4*1024*1024; // 4MB
    int cacheSizeDisk = 32*1024*1024; // 32MB
    NSURLCache *sharedCache = [[[NSURLCache alloc] initWithMemoryCapacity:cacheSizeMemory diskCapacity:cacheSizeDisk diskPath:@"nsurlcache"] autorelease];
    [NSURLCache setSharedURLCache:sharedCache]; 

,但由于某种原因,它不会缓存图像。如果我将所有图像加载到可用的Internet连接中,然后断开或使用Edge网络再次获取图像。

编辑:iOS 5及以下如果您使用nsurlrequest的nsurlrequestRetrunturncachEdataEseloAd cachepolicy或返回适当的缓存 - 控制标头。

cache-control。

在afnetworking f.a.q ..

中解释了有关缓存的问题。

总而言之,即使您使用diskCapacity>0创建NSURLCacheNSURLCache在iOS上也不提供磁盘缓存功能(似乎被忽略了),解决方案是使用其他NSURLCache的其他实现FAQ中建议的SDURLCache

您需要对服务器访问,以确保它正在为每个请求发送CACHE-CORTORTOL标头,以供任何使用nsurlcache。如果您不或无法获得该设置(例如在我的情况下),则需要滚动自己的缓存层或使用Sdurlcache或rncachingurlprotocol。

最新更新