2012-10-22 48 views
1

我正在创建一个需要从远程API获取大量信息的iOS应用程序。有很多http请求可以很好地缓存,但似乎NSURLConnection没有足够的积极缓存:每次我终止应用程序并重新启动时,所有请求都会再次发出,而不是来自缓存( iOS 5 应该使用磁盘缓存)。如果我再次发出相同的请求(在应用程序生存期内),它确实来自缓存。NSURLRequestReturnCacheDataElseLoad在第一次请求时不从缓存中加载?

我使用的是NSURLRequestReturnCacheDataElseLoad策略,并且http服务器上的缓存控制标头被设置为可以缓存所有内容。

所以问题在于,每次启动应用程序时都会再次发出所有请求。为什么这不是来自磁盘?

编辑:似乎这个问题只存在于网址中有查询时。例如,当我请求http://www.apple.com/时,一切都很好,在新的应用程序启动时,实际上没有请求。当我更改为http://www.apple.com/?test时,首先发出第一个请求。

编辑2:看起来像TTURLRequest(部分of20)和SDURLCache是解决方案。

回答

1

回答我的问题:

的解决方案是SDURLCache添加到您的项目,然后将此代码添加到您的- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法:

SDURLCache *URLCache = [[SDURLCache alloc] initWithMemoryCapacity:4 * 1024 * 1024 diskCapacity:24 * 1024 * 1024 diskPath:[SDURLCache defaultCachePath]]; 
[NSURLCache setSharedURLCache:URLCache]; 

这是很多与缓存,包括网址,更具侵略性与查询。

相关问题