だから私はそれがこのように動作します、ウェブサイト上のコンテンツをロード用のAjaxシステムを持っている:ボタンをクリックすると、JavaScriptの関数が呼び出されMicrosoft EdgeキャッシングAjaxリクエスト?
:
onclick="doSomething('abc')"
マイJavascriptが次のようになります。
//Ajax
var xmlhttp;
function loadXMLDoc(url,cfunc) {
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=cfunc;
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
function doSomething(var) {
loadXMLDoc("http://www.website.com/ajax/doSomething.php?var="+var, function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("response-container").innerHTML=xmlhttp.responseText;
}
});
}
だけのは、このようなビットをテキストエコーと呼ばれるPHPファイル:
echo "Response here";
一般に、このタイプのシステムを使用して、このJavascript関数が実行されるたびに特定のIDを持つ要素に新しいコンテンツを読み込みます。
これは3年以上の間完璧に動作していますが、何らかの理由でMicrosoft Edgeがこの応答をキャッシュしています。したがって、コンテンツはまったく正しく生成されていません。あなたはこれを一度実行し、x時間だけ同じキャッシュされた応答を返し続けます。
これに関する正しい修正は何ですか?私はヘッダーを使用する言及を見たことがありますが、私はこの状況で修正プログラムを適用する方法がわかりません。
は、クエリ文字列パラメータにタイムスタンプを追加しようとしたことがありますか?私はCSSファイルを強制的にキャッシュしないようにしています。つまり、 '?var =" + var + "&ts =" + Date.now() ' – Quantastical
ajaxリクエストをキャッシュすることは一般的な問題であり、ブラウザはより積極的にキャッシュする傾向があります。 。 –