NSURLConnectionを使用すると、スティッキーキャッシュに問題が発生します。次の行を使用してNSMutableURLRequestを作成します。
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:60];
[request setHTTPMethod:@"POST"];
[request setValue:@"text/javascript,application/json,application/javascript;q=0.9,*/*;q=0.8" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setValue:[NSString stringWithFormat:@"%d", [requestData length]] forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody: requestData];
次に、次のように接続します。
NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:request delegate:self];
表面的にはすべてが正常に機能し、サーバーが送信するjsonオブジェクトを接続してプルします。サーバー上のjsonオブジェクトを更新して別のノードが含まれるようにした後、アプリを介して上記のようにURLを要求すると、キャッシュされたバージョンのjsonオブジェクトが返されます。受信したデータをで出力することで証明されたように
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
要求されたURLにタイムスタンプを追加しようとしましたが、キャッシュされたバージョンを受け取りました。各リクエストの前にreceivedData変数をnilにリセットし、connection:didReceiveData:で変数を再初期化しますが、キャッシュされたバージョンを取得しています。
キャッシュを強制しないようにデリゲートメソッドを設定することもできます。
- (NSCachedURLResponse *) connection:(NSURLConnection *)connection
willCacheResponse:(NSCachedURLResponse *)cachedResponse{
return nil;
}
編集:ブラウザでリクエストされたURLを押すことで変更された応答を確認しましたが、その後もアプリはキャッシュされたデータを使用します。
だから私の質問は、どうすればキャッシュを完全に破壊できますか?
ありがとう、ブルース