IE6: Caching von Ajax Inhalten
Der Internet Explorer 6 speichert XmlHttpRequest Antworten genauso im Cache wie normale Seitenaufrufe. Besonders fatal ist der Umstand, dass man nicht mal mit einem Reload der gesamten Seite einen Reload des XHR Inhalts erzwingen kann.
Ich habe nun drei Lösungsansätze:
- Die Antwort auf den XmlHttpRequest muss einen HTTP Cache-Control Header mitsenden, welcher verhindert, dass der Content zwischengespeichert wird.
- Man hängt eine Zufallszahl an die URL an, welche den Ajax Inhalt liefert.
- Statt die Daten per GET abzuholen benutzt man POST Anfragen.
Wenn man also keine Kontrolle über die Cache-Control HTTP-Header in der Anwendung hat, dann sollte man unbedingt POST Anfragen senden, denn diese werden in keinem Browser zwischengespeichert - im Gegensatz zu GET Anfragen.
POST Anfragen zu benutzen halte ich außerdem für sauberer als eine Zufallszahl an die URL anzuhängen.
Ich habe in der Anwendung, in der das Problem grade auftrat, einfach alle XHRs auf POST umgestellt.
- ajax and ie caching problems
- the state of browser caching
- working around ie6s caching of ajax content