Heim > Artikel > Web-Frontend > Lösung für das IE-Caching-Problem bei Ajax-Aufrufen
Dieser Artikel stellt hauptsächlich die Lösung des IE-Cache-Problems in Ajax-Aufrufen vor. Er analysiert detailliert die Prinzipien und spezifischen Lösungen des IE-Cache-Mechanismus. Freunde in Not können sich darauf beziehen 🎜 >
Das Beispiel dieses Artikels analysiert die Lösung des IE-Cache-Problems in Ajax-Aufrufen. Teilen Sie es als Referenz mit allen: Während des Ajax-Anforderungsaufrufs wurden Probleme festgestellt: Die Hintergrundanforderung ist eine einfache ASPX-Datei, und diese Seite hat die Auswirkungen der Zwischenspeicherung nicht berücksichtigt Ajax zum Debuggen Ich habe festgestellt, dass die Ergebnisse manchmal direkt zurückgegeben werden, ohne dass der Hintergrundcode überhaupt ausgeführt wird, sodass dies wahrscheinlich vom Browser-Cache beeinflusst wird. Nach einer Online-Suche stellte sich heraus, dass es sich um ein Caching-Problem handelte: „Wenn im IE die von XMLHttpRequest übermittelte URL mit dem Verlauf übereinstimmt, wird der Cache verwendet und überhaupt nicht an den Server übermittelt.“ Daher können die neu übermittelten Daten oder neuen Daten nicht abgerufen werden “.
Die Lösungen lauten ungefähr wie folgt:1. Verbessern Sie nur die Serverseite
(1) Der Hintergrund ist eine einfache .aspx-Datei. direkt Fügen Sie einfach<%@ OutPutCache Location="None"%>hinzu. (2) Wenn der Hintergrund jedoch eine .ashx-Datei ist, werden die Cache-Einstellungen normalerweise direkt in der Klasse geändert.
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
2. Verbessern Sie nur den Client
(1) Ändern Sie die Anforderungsadresse durch Hinzufügen von Zufallszahlen oder Zeitstempelna.var url='AjaxOperations.aspx?rdm='+Math.random()+'&action='+op;b. Zeitstempel hinzufügen:
var url='AjaxOperations.aspx?dtStamp='+new Date().getTime()+'&action='+op;Diese Lösung muss nur eine Zeit oder Zufallszahl als Parameter hinzufügen und der Server benötigt keine Änderungen, um das Ziel zu erreichen. (2) Der asynchrone Front-End-Aufruf legt die Attribute des XMLHttpRequest-Objekts fest. Fügen Sie
XMLHttpRequest.setRequestHeader("If-Modified-Since","0")hinzu, bevor XMLHttpRequest die Anfrage sendet Weg". Da Sie nicht wissen können, welche Ajax-Anforderungen zwischengespeichert werden müssen oder nicht (um den Leistungsengpass der Website zu beheben, verwenden die meisten von ihnen zwischengespeichertes Ajax), bestätigen Sie daher jedes Mal, wenn Sie eine Anforderung senden, ob Sie sie zwischenspeichern möchten zum ersten in 2 (1) Offensichtlich wird ein URL-Parameter weniger geschrieben, und es besteht keine Notwendigkeit, die Einstellungen auf der Serverseite zu ändern (Verbesserungsmethode 1). Für die gekapselte Ajax-Bibliothek ist dies jedoch möglicherweise nicht mehr möglich Um das XMLHttpRequest-Objekt direkt außerhalb zu verwenden, kann es sein, dass („If-Modified-Since“, „0“) als Parameter übergeben wird: ajaxObj.sendPost (andere Parameterliste, ... „If-Modified“) -Since", "0"); (post method) oder ajaxObj.sendGet(other parameter list,...."If-Modified-Since","0"); (get method)Das Obige habe ich für alle zusammengestellt und hoffe, dass es in Zukunft für alle hilfreich sein wird. Verwandte Artikel:
Detaillierte Erläuterung der Ajax- und Form+Iframe-Methoden zur Implementierung des Datei-Uploads
Eine kurze Analyse von der geschickte Einsatz von Ajax beforeSend verbessert die Benutzererfahrung
Schnelle Lösung für Ajax-Übertragungsparameter mit Sonderzeichen
Das obige ist der detaillierte Inhalt vonLösung für das IE-Caching-Problem bei Ajax-Aufrufen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!