2016-04-05 27 views
2

So habe ich einen Ajax-System zum Laden von Inhalten auf einer Webseite, funktioniert es wie folgt aus:Microsoft Edge Caching Ajax Anforderungen?

Wenn Klicken auf eine Schaltfläche, eine Javascript-Funktion aufgerufen wird:

onclick="doSomething('abc')" 

Meine Javascript sieht wie folgt aus:

//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; 
     } 
    }); 
} 

die PHP-Datei nur Echo ist ein bisschen wie dieser Text genannt:

echo "Response here"; 

Im Allgemeinen verwende ich diese Art von System, um bei jedem Ausführen dieser Javascript-Funktion neuen Inhalt in einem Element mit einer bestimmten ID zu laden.

Das hat seit etwas mehr als 3 Jahren perfekt funktioniert, aber aus irgendeinem Grund Caching Microsoft Edge die Antwort von diesem. Daher wird der Inhalt überhaupt nicht korrekt generiert. Sie führen das also einmal aus, und für x Zeit wird es immer die gleiche zwischengespeicherte Antwort zurückgeben.

Irgendwelche Ideen, was die richtige Lösung dafür ist? Ich habe erwähnt, Header zu verwenden, aber ich bin mir nicht sicher, wie man in dieser Situation eine Korrektur anwendet.

+2

Haben Sie versucht, einen Zeitstempel zu den Abfrage-String-Parameter angeben? Ich habe das verwendet, um zu erzwingen, dass CSS-Dateien nicht zwischengespeichert werden. dh '? var =" + var + "& ts =" + Date.now() ' – Quantastical

+0

Die Zwischenspeicherung von ajax-Anfragen ist ein häufiges Problem, und Browser tendieren dazu, immer aggressiver zwischenzuspeichern. Ein zusätzlicher Anforderungsparameter, der einen timestamp-Wert enthält, ist eine häufige Problemumgehung –

Antwort

7

Wir hatten Probleme mit zwischengespeicherten Ajax-Anfragen auf Edge und IE 10/11. Unsere Lösung war die Verwendung des HTTP-headerCache-Control: no-cache Dies funktioniert auch ohne Zeitstempel.

1

Der beste Weg, Cache in IE zu deaktivieren oder MS Edge ist, es zu tun:

Drücken Sie einfach f12, dann gehen Sie auf Netzwerk-Registerkarte und die vierte finden Schaltfläche in der Toolbox mit diesem Titel: Immer vom Server aktualisieren.

Es wird ohne Cache-Anforderung jedes Mal senden .. enter image description here

+0

Diese Antwort ist in diesem Kontext nicht wirklich hilfreich, sie fragen, wie dies für alle Benutzer ihrer Web-App funktioniert, es ist normalerweise nicht möglich, jeden einzelnen Benutzer zu bitten, Änderungen an seinen Browser-Einstellungen vorzunehmen. – Keith

Verwandte Themen