何らかの理由で、IE6/7はjson結果セットを返すajax呼び出しをキャッシュしています。
私のページは呼び出しを行い、jsonの結果を返します。これをページに挿入します。
IE6 / 7にこの呼び出しを強制し、キャッシュされた戻り値を使用しないようにするにはどうすればよいですか?
何らかの理由で、IE6/7はjson結果セットを返すajax呼び出しをキャッシュしています。
私のページは呼び出しを行い、jsonの結果を返します。これをページに挿入します。
IE6 / 7にこの呼び出しを強制し、キャッシュされた戻り値を使用しないようにするにはどうすればよいですか?
あなたは追加したいかもしれません
Cache-Control: no-cache
JSONを提供しているときに、HTML応答ヘッダーに応答をキャッシュしないようにブラウザーに指示します。
ASP.NET(またはASP.NET MVC)では、次のように実行できます。
Response.Headers.Add("Cache-Control", "no-cache");
ie で設定を変更できますが、問題はおそらくサーバーにあります。外に出て、すべてのユーザーのブラウザー設定を変更することはできません。ただし、少なくともブラウザで確認したい場合は、[インターネット オプション] -> [全般] (タブ) -> [閲覧の履歴] (セクション) -> [設定] (ボタン) -> [この Web ページにアクセスするたびに] に移動してください。しかし、ある時点で戻ってきました。
サーバー上で修正するには、http: //www.mnot.net/cache_docs/ をご覧ください。
デバッグに (cygwin を使用して) curl を使用することは、ネットワークを介して実際に何が送信されているかを把握する優れた方法です。
キャッシュ制御が機能しない場合 (DrJokepu の回答を参照)、仕様によれば、クエリ文字列を含む URL のコンテンツはキャッシュ不可であるべきであるため、リクエスト URL に無意味なクエリ パラメータを追加する可能性があります。値は問題ではありませんが、本当に徹底したい場合は、次のようにエポック値を追加できます。
var url = "myrealurl?x=" + (new Date()).getTime();
しかし、これはハックです。実際には、これはサーバー側で適切なキャッシング ヘッダーを使用して解決する必要があります。
JsonResult を返すコントローラー アクションでは、キャッシュを回避するためにヘッダーで指定する必要があります。
ControllerContext.HttpContext.Response.AddHeader("Cache-Control", "no-cache");