17

NSURLCacheを特定のフォルダ(../../Application Support/Offline)に設定して、OSによってランダムに削除されないようにしてから、NSURLRequestReturnCacheDataElseLoadポリシーでNSURLRequestを送信します。NSURLResponseがキャッシュから来たかどうかを知るには?

NSURLConnectionDelegateに準拠したクラスによって処理されるレスポンスが、キャッシュまたはネットから得られることをどのようにして知ることができますか?問題についてここで

答えて

6

良い記事:

http://andrewmarinov.com/ioss-corenetwork-lying/

基本的には、NSHTTPURLResponseからステータスコードは常に200

あるので、あなたが本当に知っておく必要がある場合は、アイテムを確認することができますすることですリクエストを行う前のキャッシュ

NSCachedURLResponse *cachedResponse = [[NSURLCache sharedURLCache] cachedResponseForRequest:request]; 
NSHTTPURLResponse *httpCacheResponse = (NSHTTPURLResponse *)cachedResponse.response; 

変更された 'etag'または 'modified-date'ヘッダーを保存する場合

NSString* etag = httpCacheResponse.allHeaderFields[@"etag"]; 

次に、応答ハンドラのチェックでは、etagまたは変更日は同じです。もしそうなら、その応答はキャッシュからのものでした!

+0

これは基本的に私がやったことです – greg3z

+2

あなたはいつもあなた自身の質問に答えることができます!私の人生の時間を節約できただろう;-) –

関連する問題