你好 molily,
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 prickelndAnscheinend 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.
Wo soll ich denn die Daten herbekommen? Sie sind in Operas Cache – schön,
ich will sie aber verwenden können, im Cache helfen sie mir wenig. Bei
einem 304-Response ist responseText leer.
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.
Wenn er mir die Ressource zur Verfügung stellen würde, wäre mir das egal.
Aber ich komme effektiv nicht an die Daten.
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.
Meine Server-Logik sendet vollständig richtige Last-Modified-Header und
schickt einen 304, wenn es die Situation zulässt. Aber anstatt das Opera
die Daten aus dem Cache in den responseText oder ein ähnliches Attribut
setzt, sind sie einfach nicht vorhanden. Gut, man könnte jetzt
argumentieren, dass man dann in JS einen eigenen Cache implementieren
müsse. Halte ich war nicht für sinnvoll, aber es sprechen auch technische
Dinge dagegen: sobald man einen Reload gemacht hat, ist der Cache
dahingeschieden. Ich komme also nicht mehr an die Daten, um sie eventuell
weiterzuverwenden.
Das machst du ja beim Cforum z.B. beim Auf-/Zuklappen der Threads,
lediglich &unique=... durchkreuzt dies zur Behebung des Cache-Problems.
Eben das ist eine der Situationen, in denen ich gern verhindern würde, dass
ein Conditional GET gesendet wird, damit ich an die Daten komme.
再见,
克里斯蒂安
Plasma-Bildschirm geklaut | Zahnarztbesuch
Microsoft: Where do you want to go today?
Linux: Where do you want to go tomorrow?
FreeBSD: Are you guys coming, or what?
http://wwwtech.de/