PHP-session + ETag (Header)
Zitat:
Auch mit verwendeten Etag? <edit> wegen THREAD Trennung; ETag (ein Erklärung) |
Zitat:
Mario |
Zitat:
Code:
@session_start(); Code:
Array Code:
Array Code:
HTTP/1.1 200 OK |
So nun noch der komplette Test.
Code:
@session_start(); Code:
127.0.0.1 - - [22/Apr/2005:12:43:48 +0200] "GET /__files/test.session.inc.php HTTP/1.1" 304 0 |
@Netspy - Da Du wohl von uns beiden der Header-Profi bist - wirst Du mir bestimmt noch sagen können wie die Header-Bestandteile für
Code:
header('Expires: Thu, 01 Nov 2200 00:00:00 GMT'); <edit> Was im IE, siehe oben, schön funktioniert hat, klappt mit dem Firefox nicht, dieser sendet nur bei jedem 2.mal einen $_SERVER['HTTP_IF_NONE_MATCH'] - ich schätze das liegt wohl an den unqualifiziert überschriebenen Header-Angaben ?! Code:
127.0.0.1 - - [22/Apr/2005:14:49:02 +0200] "GET /__files/test.session.inc.php HTTP/1.1" 200 7858 Außerdem habe ich dieses Thema mal in PHP.de eingestellt. |
weitere Analyse:
Überschreiben des von session_start() gesetzten Header muß nicht wie oben gezeigt vollständig passieren. Es genügt folgendes: Code:
<?php Die Browser reagieren unterschiedlich, und scheinbar nach ihren Eigenheiten. (ausgehend von unveränderten ETag) IE6 => immer 304 (URL oder Reload) Firefox 1.0.3 => 200 / 304 im wechsel (URL oder Reload) Opera 8 => immer 304 (URL) / immer 200 (Reload) Womit ich sagen würde, der einzig Browser mit Verstand ist hier der Opera - aber egal. Kennt jemand diese Werte post-check=0, pre-check=0 für den Cache-Control?? |
Sorry, komme leider jetzt erst zum Antworten.
Mit dem Überschreiben der Header habe ich mich wohl geirrt. Ich hatte das so in Erinnerung, dass sich PHP gegen ein Überschreiben wehrt aber ist dann wohl nicht so. Vielleicht war das auch nur bei früheren PHP-Versionen so. Damit FF immer richtig anfragt, kannst du mal versuchen, beim "if ( $_SERVER['HTTP_IF_NONE_MATCH'] == $etag )" zusätzlich zum Status auch noch das E-Tag und Cache-control mitzusenden. Zitat:
http://msdn.microsoft.com/workshop/a...rol_Extensions Mario |
So nach längeren Tests habe ich diese Lösung gefunden !!
PHP-Code:
Zitat:
Auch der Firefox sendet nun immer einen Request-Header mit einem [If-None-Match] -Value, sofern der UA/Client eine lokale Kopie im Cache hat, d.h. der Browser validiert gegen den Server, bei PHP natürlich gegen das Script, ob sich der Inhalt des Dokuments verändert hat. Zitat:
Zitat:
_________________ @Netspy, evtl. kannst Du mir noch sagen ob es Sinn macht einen Content-Length: im Response-Header zu senden. Da ja sowieso der der ETag aus dem String $content gezogen wird wäre dies ja auch kein Problem, hätte es einen Vorteil. |
Zitat:
Mario |
Zitat:
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 21:44 Uhr. |
Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
© Dirk H. 2003 - 2023