Cache-Control vs. Expires
Verfasst: Do 15. Sep 2011, 15:09
Hallo,
bei der Evaluierung einer Web-Application-Firewall (WAF) mit Caching-Funktionalität bin ich darauf gestoßen, dass Contenido sich widersprechende Header setzt:
Beispiel:
Expires: Thu, 15 Sep 2011 14:04:59 GMT
Last-Modified: Thu, 15 Sep 2011 13:04:59 GMT
Cache-Control: post-check=0, pre-check=0
Cache-control: private, no-cache
Pragma: no-cache
Hier sagt der Expires-header: Cache eine Stunde, während Cache-Control sag: Cache nicht, Widerspruch! Die WAF nimmt leider Expires-Header.
Ich hab dann etwas im Code gesucht und gefunden, dass default-Caching tatsächlich "no" ist, aber $this->_expires immer auf +3600 Sekunden gesetzt wird. Das wird dann in session.inc in:
default:
$rand = md5(mt_rand());
$mod_gmt = gmdate("D, d M Y H:i:s", time()-3600) . " GMT";
if ($this->_expires > 0)
{
header("Expires: ". gmdate("D, d M Y H:i:s", $this->_expires) . " GMT");
} else {
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
}
Das $mod_gmt ist da eh überflüssig und ich denke, es sollte nur
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
heißen.
Gibt es einen Grund, wieso da sich widersprechende Header gesetzt werden?
Vielen Dank im Voraus!
Jörn
bei der Evaluierung einer Web-Application-Firewall (WAF) mit Caching-Funktionalität bin ich darauf gestoßen, dass Contenido sich widersprechende Header setzt:
Beispiel:
Expires: Thu, 15 Sep 2011 14:04:59 GMT
Last-Modified: Thu, 15 Sep 2011 13:04:59 GMT
Cache-Control: post-check=0, pre-check=0
Cache-control: private, no-cache
Pragma: no-cache
Hier sagt der Expires-header: Cache eine Stunde, während Cache-Control sag: Cache nicht, Widerspruch! Die WAF nimmt leider Expires-Header.
Ich hab dann etwas im Code gesucht und gefunden, dass default-Caching tatsächlich "no" ist, aber $this->_expires immer auf +3600 Sekunden gesetzt wird. Das wird dann in session.inc in:
default:
$rand = md5(mt_rand());
$mod_gmt = gmdate("D, d M Y H:i:s", time()-3600) . " GMT";
if ($this->_expires > 0)
{
header("Expires: ". gmdate("D, d M Y H:i:s", $this->_expires) . " GMT");
} else {
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
}
Das $mod_gmt ist da eh überflüssig und ich denke, es sollte nur
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
heißen.
Gibt es einen Grund, wieso da sich widersprechende Header gesetzt werden?
Vielen Dank im Voraus!
Jörn