リモート API から多くの情報を取得する必要がある iOS アプリを作成しています。完全に問題なくキャッシュできる多くの http リクエストがありますが、NSURLConnection
十分に積極的にキャッシュしていないようです: アプリを強制終了して再起動するたびに、すべてのリクエストがキャッシュ (iOS 5はディスク キャッシュを使用する必要があります)。同じリクエストを (アプリの有効期間内に) 2 回行うと、キャッシュから取得されます。
ポリシーを使用してNSURLRequestReturnCacheDataElseLoad
おり、http サーバーのキャッシュ制御ヘッダーが設定されているため、すべてをキャッシュできます。
したがって、問題は、アプリが起動するたびにすべてのリクエストが再度行われることです。これがディスクから来ないのはなぜですか?
編集: この問題は、URL にクエリがある場合にのみ発生するようです。たとえば、http://www.apple.com/をリクエストすると、すべて問題なく、アプリを新たに起動すると、実際にはリクエストは行われません。http://www.apple.com/?testに変更すると、最初のリクエストが常に行われます。
編集2:TTURLRequest
(three20の一部)のように見えSDURLCache
、解決策です。