2012-10-22 80 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]; 

這是很多與緩存,包括網址,更具侵略性與查詢。

相關問題