我正在創建一個需要從遠程API獲取大量信息的iOS應用程序。有很多http請求可以很好地緩存,但似乎NSURLConnection
沒有足夠的積極緩存:每次我終止應用程序並重新啓動時,所有請求都會再次發出,而不是來自緩存( iOS 5 應該使用磁盤緩存)。如果我再次發出相同的請求(在應用程序生存期內),它確實來自緩存。NSURLRequestReturnCacheDataElseLoad在第一次請求時不從緩存中加載?
我使用的是NSURLRequestReturnCacheDataElseLoad
策略,並且http服務器上的緩存控制標頭被設置爲可以緩存所有內容。
所以問題在於,每次啓動應用程序時都會再次發出所有請求。爲什麼這不是來自磁盤?
編輯:似乎這個問題只存在於網址中有查詢時。例如,當我請求http://www.apple.com/時,一切都很好,在新的應用程序啓動時,實際上沒有請求。當我更改爲http://www.apple.com/?test時,首先發出第一個請求。
編輯2:看起來像TTURLRequest
(部分of20)和SDURLCache
是解決方案。