Hallo,
Ich möchte im JS ja irgendwie an die Daten kommen, deshalb mache ich den Request. Wenn mir da ein Cache von einer vergangenen Session reinhaut ist das nicht so prickelnd
Anscheinend vermischt du zwei Sachen. Ich redete über einen Conditional GET, den Opera sendet, falls der Server ETag oder Last-Modified auf den ersten Request geantwortet hat. Darin sehe ich, wenn auf der Serverseite nicht absichtlich Unsinn veranstaltet wird, wie in https://forum.selfhtml.org/?t=116872&m=748770 ausgeführt kein Problem. Man bekommt immer die aktuellen Daten und falls der XMLHttpRequest ein CGI-Programm auf dem Server ausführen soll, wird dieses in jedem Fall korrekt ausgeführt.
Was du wahrscheinlich meinst (vielleicht meinte auch Christoph dies): Wenn in den Opera-Einstellungen unter »Check documents« nicht »Always« steht bzw. eine entsprechend geringe Zeitspanne, dann führt Opera *gar keinen* (also nicht einmal einen konditionalen) Request zum Server durch, sondern entnimmt die Ressource direkt aus dem Festplatten-Cache. In dem Fall ist man gearscht, weil der Server vom XMLHttpRequest nichts mitbekommt. Deshalb ist »Always« auch m.E. die einzig sinnige Einstellung.
vor allem weil ich noch keine Methode gefunden habe, den Conditional GET zu unterdrücken.
Das Conditional GET ist kein Problem, du meinst wohl eher, du hast keine Methode gefunden, zu unterdrücken, dass Opera bei entsprechender Einstellung aggressiv zwischenspeichert und somit überhaupt keinen Request sendet.
Da kann man wirklich nur individuell seine Cache-Einstellungen ändern, wenn HTTP-Header, die das Cachen verhindern sollen, auf Opera keinen Eindruck machen.
Ich musste wirklich auf &unique=<timestamp> ausweichen, um an die Daten zu kommen.
Ja, das ist der Ausweg zur Umgehung des Cache-Problems. Wenn hingegen der Conditional GET Schwierigkeiten machen sollte, sollte man einfach den Server/die CGI-Logik dazu bringen, sinnvolle oder keine Last-Modified- und ETag-Header zu senden. Das machst du ja beim Cforum z.B. beim Auf-/Zuklappen der Threads, lediglich &unique=... durchkreuzt dies zur Behebung des Cache-Problems.
Mathias