|
|||
![]() Zitat:
![]() Auch mit verwendeten Etag? <edit> wegen THREAD Trennung; ETag (ein Erklärung)
__________________
</ulle> |
Sponsored Links |
Sponsored Links |
|
|||
![]() Zitat:
Code:
@session_start(); header('ETag: 737060cd8c284d8af7ad3082f209582d'); header('Expires: Thu, 19 Nov 2200 08:52:00 GMT'); header('Cache-Control: '); header('Pragma: '); Code:
Array ( [Accept] => */* [Accept-Encoding] => gzip, deflate [Accept-Language] => de [Connection] => Keep-Alive [Cookie] => hS=be5f4752fac3a93d4b33333b9d5c92cb [Host] => localhost [If-None-Match] => 737060cd8c284d8af7ad3082f209582d [User-Agent] => Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;) ) Code:
Array ( [HTTP_ACCEPT] => */* [HTTP_ACCEPT_ENCODING] => gzip, deflate [HTTP_ACCEPT_LANGUAGE] => de [HTTP_CONNECTION] => Keep-Alive [HTTP_COOKIE] => hS=be5f4752fac3a93d4b33333b9d5c92cb [HTTP_HOST] => localhost [HTTP_IF_NONE_MATCH] => 737060cd8c284d8af7ad3082f209582d [HTTP_USER_AGENT] => Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;) ) Code:
HTTP/1.1 200 OK Date: Fri, 22 Apr 2005 10:07:58 GMT Server: Apache/1.3.27 (Win32) PHP/4.3.9 X-Powered-By: PHP/4.3.9 Set-Cookie: hS=b74e49c22d902e674cc09aca06a81071; path=/ Expires: Thu, 19 Nov 2200 08:52:00 GMT Cache-Control: Pragma: ETag: 737060cd8c284d8af7ad3082f209582d Connection: close Content-Type: text/html
__________________
</ulle> |
|
|||
![]()
So nun noch der komplette Test.
Code:
@session_start(); $Content = 'In diesem String steht das gesamte Ausgabe-Dokument'; $etag = md5($Content); if ( isset($_SERVER['HTTP_IF_NONE_MATCH']) ) { if ( $_SERVER['HTTP_IF_NONE_MATCH'] == $etag ) { header('HTTP/1.0 304 Not Modified'); exit(); } } header('ETag: '.$etag); header('Expires: Thu, 01 Nov 2200 00:00:00 GMT'); header('Cache-Control: '); header('Pragma: '); echo $content; Code:
127.0.0.1 - - [22/Apr/2005:12:43:48 +0200] "GET /__files/test.session.inc.php HTTP/1.1" 304 0
__________________
</ulle> |
|
|||
![]()
@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'); header('Cache-Control: '); header('Pragma: '); <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 127.0.0.1 - - [22/Apr/2005:14:49:03 +0200] "GET /__files/test.session.inc.php HTTP/1.1" 304 0 127.0.0.1 - - [22/Apr/2005:14:49:04 +0200] "GET /__files/test.session.inc.php HTTP/1.1" 200 7858 127.0.0.1 - - [22/Apr/2005:14:49:05 +0200] "GET /__files/test.session.inc.php HTTP/1.1" 304 0 Außerdem habe ich dieses Thema mal in PHP.de eingestellt.
__________________
</ulle> |
|
|||
![]()
weitere Analyse:
Überschreiben des von session_start() gesetzten Header muß nicht wie oben gezeigt vollständig passieren. Es genügt folgendes: Code:
<?php session_start() : : header('ETag: '.$etag); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); : ?> 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??
__________________
</ulle> |
|
||||
![]()
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.
__________________
</ulle> |
|
||||
![]() Zitat:
Mario |
Sponsored Links |
|
|||
![]() Zitat:
__________________
</ulle> |
Sponsored Links |
![]() |
Themen-Optionen | |
Ansicht | |
|
|
![]() |
||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Bild zentrieren | JuKo | CSS | 4 | 21.03.2018 00:35 |
Apache, IIS, PHP und Session Cookie | laborix | Serveradministration und serverseitige Scripte | 10 | 18.12.2011 01:42 |
PHP MySQL - Anfängerfrage: Empfehlung GET, POST, SESSION oder Kombination? | DerJeff | Serveradministration und serverseitige Scripte | 9 | 07.06.2011 11:01 |
header verrutscht... | weblearner | CSS | 6 | 03.12.2008 19:34 |
Dateien auslagern - Include und PHP | ArcVieh | Serveradministration und serverseitige Scripte | 17 | 27.03.2008 18:09 |