ホームページ > 記事 > ウェブフロントエンド > Ajax呼び出しにおけるIEキャッシュ問題の解決策
この記事では主に、Ajax 呼び出しにおける IE キャッシュの問題の解決策を詳しく説明します。必要な方は参考にしてください。
この記事の例 ajax 呼び出しにおける IE キャッシュの問題の解決策を分析しました。詳細は次のとおりです: ajax リクエストの呼び出し中に発見された問題: バックグラウンド リクエストは単純な .aspx ファイルであり、このページでは ajax を使用する場合のキャッシュの影響は考慮されていません。デバッグしてみると、あることが分かります。 このとき、バックグラウンドコードを使わずに直接結果を返しているので、おそらくブラウザのキャッシュの影響を受けていると思われます。ネットで検索したところ、キャッシュの問題であることが判明しました。「IEでは、XMLHttpRequestで送信されたURLが履歴と同じ場合、キャッシュが使用され、サーバーにはまったく送信されません。そのため、新たに投稿されたデータまたは新規データを取得できません」。
解決策はおおよそ次のとおりです:1. サーバー側のみを改善します
(1) 背景は単純な .aspx ファイルで、<%@ OutPutCache Location="None"%>を追加するだけです。 (2) ただし、背景が .ashx ファイルの場合、キャッシュ設定は通常、クラス内で直接変更されます。
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
2. クライアントのみを改善
(1) 乱数を追加するかタイムスタンプを追加してリクエストアドレスを変更しますa、乱数を追加する:var url='AjaxOperations.aspx?rdm='+Math.random()+'&action='+op;b、タイムスタンプを追加する:
var url='AjaxOperations.aspx?dtStamp='+new Date().getTime()+'&action='+op;このような解決策パラメータとして時間または乱数を追加するだけで、サーバーは何も変更せずに目標を達成できます。 (2) フロントエンドの非同期呼び出しは、XMLHttpRequest オブジェクトの属性を設定します XMLHttpRequest がリクエストを送信する前に
XMLHttpRequest.setRequestHeader("If-Modified-Since","0")を追加します。個人的には、これが「正しい方法」だと思います。どの Ajax リクエストをキャッシュする必要があるかどうかを知ることができないため (Web サイトのパフォーマンスのボトルネックを解決するために、ほとんどの Web サイトではキャッシュされた Ajax が使用されています)、リクエストを送信するたびに、キャッシュするかどうかを確認し、比較してください。 2 の最初のものへ ( 1) 明らかに url パラメーターが 1 つ少なくなり、サーバー側の設定を変更する必要はありません (改善方法 1)。ただし、カプセル化された ajax ライブラリの場合はそれができなくなる可能性があります。 XMLHttpRequest オブジェクトを外部で直接使用するには、通常の設定構文 ("If-Modified-Since", "0") をパラメータとして渡すことになります: ajaxObj.sendPost (その他のパラメータ リスト,...."If-Modified) -Since", "0"); (postメソッド)
or ajaxObj.sendGet(otherparameter list,...."If-Modified-Since","0"); (getメソッド) 上記は私が皆さんのためにまとめたものは、将来皆さんのお役に立てば幸いです。 関連記事:
ファイルのアップロードを実装するための Ajax および form+iframe メソッドの詳細な説明
ユーザー エクスペリエンスを向上させるための Ajax の beforeSend の使用に関する簡単な分析
Ajax 送信パラメーターの簡単な解決策特殊文字が含まれています
以上がAjax呼び出しにおけるIEキャッシュ問題の解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。