ASIHTTPRequest APIを使用して、WebサイドからJSONデータを取得しています。私はデフォルトのキャッシュプロパティを変更せずに非同期要求を使用しています。次のようにコードがある:ASIHTTPRequestは常にJSONデータをキャッシュしているようです
__unsafe_unretained ASIHTTPRequest * request = [ASIHTTPRequest requestWithURL:url];
request.timeOutSeconds = 30;
[request setCompletionBlock:^(void)
{
NSString *str = [request responseString];
/*
*
*
*/
}];
[request setFailedBlock:^(void)
{
NSLog(@"status: %@",[request responseStatusMessage]);
NSLog(@"%@ : %@",[request url],[[request error] debugDescription]);
}];
[request startAsynchronous];
しかし、JSONデータがサーバの変更でJSONデータの内容であるが、古いものとして残る得。
ノートパソコンとiPhoneの両方でウェブブラウザを使用してデータを確認しました。 JSONの変更後にurlをリクエストすると、まず古いデータが返されますが、ページを更新すると更新されたデータが返されます。しかし、アプリケーションでは、ASIHTTPRequestは常に古いデータを返します。
また、キャッシュされたデータが使用されているかどうかを確認するためにASIHTTPRequestコードをデバッグしようとします。しかし、それは設定されていないので、ダウンロードキャッシュを使用しないようです。それは決して[useDataFromCache]メソッドに入りません。
何が問題なのですか? ASIHTTPRequestにサーバー上に更新されたデータがあるかどうかを確認して、実際に更新されたJSONを取得する方法を教えてください。
EDIT
は私がのCache-Controlヘッダを使用し、今私は、正しい更新JSONデータを取得します。次のようにコードがある:
[request addRequestHeader:@"Cache-Control" value:@"no-cache"];
しかし、私はいつものパフォーマンスを低下させるであろう、それが修正されていない場合でも、JSONを取得しようとする要求に今からだと思います。
データを変更したかどうかを最初に確認し、変更されているかどうかを調べるにはどうすればよいですか?現在、私はPHPのURLから動的応答としてJSONデータを取得するので、データの正確性をチェックできるファイルはありません。
解決策は何ですか?
よろしく、ASIHTTPRequestのマニュアルによると
ええ、私のネットワークにはプロキシサーバーがあります。 私が覚えているように、パブリックネットワークでアプリを使用しようとしましたが、これも古いデータが返されました。 しかし、データの最新性をチェックするとともにキャッシュポリシーを実行する方法をまだ理解できません。サーバ側のレスポンスヘッダにCache-Controlヘッダを付けるとうまくいくのでしょうか? yesの場合は、 '(ASIAskServerIfModifiedCachePolicy | ASIFallbackToCacheIfLoadFailsCachePolicy)'データキャッシュポリシーを使用できますか? – manuyavuz
お寄せいただきありがとうございます。私たちは、サーバー側が実際に応答をキャッシュしていたことを認識しました。問題なく動作します。 – manuyavuz