hi,
Aber das Dein heißgeliebter Opera sich hier auch eine Pause gönnt, hat mich selbst überrascht.
Nein, das lässt mir natürlich keine Ruhe :-)
Ich hab mir jetzt mal folgendes Testszenario dazu gebastelt:
-
ein Script, welches:
- den aktuellen Timestamp des Requests in eine Session schreibt
- die Request-Header mittels getallheaders() in die Session schreibt
- den aktuellen Timestamp als sichtbare Kontrollanzeige als HTML-Dokument an den Client schickt
- einen Link auf sich selber enthält, um die Ressource erneut "anzufordern"
- einen Last-Modified-Header/ und einen ETag-Header zeugt
- auf If-Modified-Since/If-None-Match überprüft, und je nachdem nur mit 304 oder 200 (und dabei "aktualisierter" Timestamp-Ausgabe) antwortet -
ein Script, welches mir die Session-Daten zur Kontrolle anzeigt
Ich lade im Opera mein erstes Script, es gibt mir als (formatierten) Timestamp
Sun, 09 Apr 2006 15:36:45 +0200
aus.
Ich lade mein Session-Kontroll-Script, das gibt mir als Zeitpunkt des letzten Zugriffs auf das erste Script ebenfalls den von diesem in der Session hinterlegten Zeitstempel
Sun, 09 Apr 2006 15:36:45 +0200
aus.
Jetzt klicke ich in meinem ersten Script auf den Link "auf-sich-selber" [1] - und sehe an der Ladeanzeige, dass der Opera eine Anfrage an den Server stellt. Die Kontrollanzeige des Timestamps bleibt bei
Sun, 09 Apr 2006 15:36:45 +0200
Jetzt lade ich mein Session-Kontroll-Script neu, und bekomme dort als von Script #1 in der Session hinterlegten Timestamp des letzten Zugriffs
Sun, 09 Apr 2006 15:37:51 +0200
angezeigt.
Opera _hat_ also beim Webserver nachgefragt, einen 304 bekommen, und die Anzeige des Dokumentes nicht aktualisiert.
Den _Zeitpunkt_ dieser erneuten Anfrage kann ich mit dem anderen Script aus der Session auslesen, und der _hat_ sich verändert.
Bei den in die Session geschriebenen Request-Headern tauchen sowohl If-Modified-Since als auch If-None-Match auf.
Ich habe es mit den Cache-Einstellungen für "Check documents: Every hour" und "Check documents: Always", bei beiden das gleiche Ergebnis.
gruß,
wahsaga
[1] Wenn ich statt dem Aufruf über den Link explizit per F5 neu lade, _dann_ macht Opera verständlicher Weise kein Conditional GET.
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }