ホームページ >ウェブフロントエンド >jsチュートリアル >IE での Ajax キャッシュ問題の迅速な解決策 (メソッドの取得)_JavaScript スキル
長い間苦労した後、プログラムはjqueryのloadメソッドを使用してリクエストを送信します。なぜ2回目のリクエストが送信できないのか不思議です。 Baidu で少し調べましたが、get メソッドを使用してロードが要求されるとは知りませんでした。そのため、IE ブラウザは
に応答しませんキャッシュされています。オンラインで多くの解決策を検索しましたが、より包括的な解決策だと思うのは次のとおりです。主にクライアント側ソリューションとサーバー側ソリューションに分かれます。
1. クライアント ソリューション
IE アクセス ポリシー: インターネット オプション -- 閲覧履歴 -- 設定 -- アクセスごとにインターネット一時ファイルのオプションを変更することもできます。ウェブページで使用できます
1: AJAX リクエストされたページの後にランダム関数を追加します。ランダム時間関数
を使用できます。JavaScript によって送信された URL の後に t=Math.random() を追加します。
例: URL "&" "t=" Math.random() または new Date();
2: XMLHttpRequest がリクエストを送信する前に XMLHttpRequest.setRequestHeader("If-Modified-Since", "0") を追加します
通常、ここでの XMLHttpRequest は直接使用されません。次のようなコードが見つかるはずです。
XXXXX.send(YYYYYY);
それを
XXXXX.setRequestHeader ( "If-Modified-Since","0");
XXXXX.send(YYYYYY);
どちらの方法も非常に効果的であることが実践で証明されています。
1. サーバーにヘッダー ("Cache-Control: no-cache, must-revalidate") を追加します。 2. xmlHttpRequest.setRequestHeader("If -Modified-Since") を追加します。 "0"); 3. Ajax でリクエストを送信する前に xmlHttpRequest.setRequestHeader("Cache-Control","no-cache"); を追加します。 Math.random(); // もちろん、ここでの fresh パラメータは任意に選択できます
5. 4 番目のメソッドは 3 番目のメソッドと似ており、URL パラメータの後に「?timestamp=」を追加します new Date().getTime( ); //このメソッドは推奨されます
6. GET の代わりに POST を使用します: 推奨されません
2. サーバー側のソリューション:
Struts2 を例に挙げます: Struts2 のサーバー側での使用法
Xml コード
ActionContext context = invocation.getInvocationContext();
HttpServletResponse response = (HttpServletResponse) context.get(StrutsStatics.HTTP_RESPONSE); if (response ! = null) {
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
response.setHeader("期限切れ", "-1");
}
return invocation.invoke();
}
}