wahsaga: HTTP HEAD und Last-Modified

Beitrag lesen

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; }