Mir ist klar, dass diese Frage gestellt wurde, aber in der modernen REST-Praxis sind weder die vorherigen Iterationen dieser Frage noch ihre Antworten korrekt oder ausreichend. Eine endgültige Antwort auf diese Frage ist erforderlich.
Das Problem ist bekannt, IE (sogar 11) speichert AJAX-Anfragen zwischen, was wirklich sehr, sehr dumm ist. Jeder versteht das.
Was nicht gut verstanden wird, ist, dass keine der vorherigen Antworten ausreichend ist. Jede vorherige Instanz dieser Frage zu SO wird als ausreichend beantwortet gekennzeichnet durch:
1) Verwenden eines eindeutigen Abfragezeichenfolgenparameters (z. B. eines Unix-Zeitstempels) für jede Anforderung, um jede Anforderungs-URL eindeutig zu machen und so das Caching zu verhindern.
-- oder --
2) Verwenden von POST anstelle von GET, da der IE POST-Anforderungen nur unter bestimmten Umständen zwischenspeichert.
-- oder --
3) Verwenden von "Cache-Control" -Headern, die vom Server übergeben werden.
IMO ist in vielen Situationen, in denen moderne REST-API-Verfahren angewendet werden, keine dieser Antworten ausreichend oder praktisch. Eine REST-API verfügt über völlig unterschiedliche Handler für POST- und GET-Anforderungen mit völlig unterschiedlichem Verhalten. Daher ist POST normalerweise keine geeignete oder korrekte Alternative zu GET. Außerdem sind viele APIs streng validiert und generieren aus zahlreichen Gründen 500 oder 400 Fehler, wenn sie nicht erwartete Parameter für Abfragezeichenfolgen eingeben. Schließlich stellen wir häufig eine Schnittstelle zu REST-APIs von Drittanbietern oder auf andere Weise her, bei denen wir keine Kontrolle über die von der Serverantwort bereitgestellten Header haben und das Hinzufügen von Cache-Steuerungsheadern nicht in unserer Macht steht.
Die Frage ist also:
Gibt es in dieser Situation wirklich nichts, was auf der Clientseite getan werden kann, um zu verhindern, dass der IE die Ergebnisse einer AJAX GET-Anforderung zwischenspeichert?