2012-04-20 6 views
0

NSURLConnectionを使用しているときにスティッキーキャッシュに問題があります。サーバーだ、それを送信し、オブジェクト、それはJSONに接続し、引っ張る、すべてが正常に動作表面にNSURLConnectionスティッキーキャッシュ

NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:request delegate:self]; 

:私はそのようにのような接続を行う

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]; 

:私は、次の行を使用してNSMutableURLRequestを作成します方法。サーバー上のjsonオブジェクトを更新して別のノードが含まれている場合、アプリケーションを介して上記のようなURLを要求すると、jsonオブジェクトのキャッシュされたバージョンが返されます。

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 

で受信したデータを出力することにより証明として、私は、要求されたURLにタイムスタンプを追加しようとしましたが、まだキャッシュされたバージョンを受け取りました。私は受け取られたData varを各要求の前にnilにリセットして、connection:didReceiveDataでvarを再初期化していますが、まだキャッシュされたバージョンを取得しています。

私も何のキャッシュを強制しないために、デリゲートメソッドを設定します。

- (NSCachedURLResponse *) connection:(NSURLConnection *)connection 
       willCacheResponse:(NSCachedURLResponse *)cachedResponse{ 
    return nil; 
} 

編集:私はブラウザに要求されたURLを押すことで変更された応答を検証したが、その後もアプリがまだキャッシュされたデータを使用しています。

私の質問は、キャッシュを完全に破壊する方法です。

おかげで、 ブルース

答えて

0

私が使用してキャッシュを削除する方法を見つけた:Appleの開発者フォーラムに役立つ人が提案して、まだ、私たちの問題を解決できなかった残念ながら

[[NSURLCache sharedURLCache] removeAllCachedResponses]; 

、パケットスニッファーを使用して、サーバーから何が送信されたのかを正確に確認し、サーバーが誤った情報を送信していることがわかりました。

この問題を調査したすべての方に感謝します。

ブルース