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
Cache-Control vs. Expires
-
- Beiträge: 4316
- Registriert: Do 30. Jun 2005, 22:56
- Wohnort: Eltmann, Unterfranken, Bayern
- Hat sich bedankt: 6 Mal
- Danksagung erhalten: 4 Mal
- Kontaktdaten:
Re: Cache-Control vs. Expires
Hallo Jörn,
zuerst einmal willkommen im Contenido Forum.
Gruß aus Franken
Ortwin
zuerst einmal willkommen im Contenido Forum.

JWester1 hat geschrieben:Gibt es einen Grund, wieso da sich widersprechende Header gesetzt werden?
- werden doch dort keine widersprechenden Header gesetzt, sondern nur entweder/oder, abhängig vom Wert in $this->_expires
- ist das eine Klasse der PHPLib und Contenido leitet davon seine eigenen Sessionklassen für Front- und Backend ab.
- Ja, die Variable $mod_gmt könnte ersatzlos entfallen, ist wohl irgendwann bei irgendwem mal während der Entwicklung übriggeblieben. Falls sie dich stört kannst du sie ja Löschen oder Auskommentieren.
Gruß aus Franken
Ortwin
ConLite 3.0.0-dev, alternatives und stabiles Update von Contenido 4.8.x unter PHP 8.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
Re: Cache-Control vs. Expires
Hallo Ortwin,
vielen Dank für deine Antwort!
Ich weiß, das ist wohl RFC-konform, weil bei HTTP 1.1 nur Cache-Control greifen sollte.
vielen Dank für deine Antwort!
Hm. Der Wert ist eigentlich immer positiv, damit wird 1h gecached. Und Cache-control sagt immer "no-cache", ist ja nicht in der if-Abfrage drin. Für mich widerspricht sich das.Oldperl hat geschrieben:
- werden doch dort keine widersprechenden Header gesetzt, sondern nur entweder/oder, abhängig vom Wert in $this->_expires
Ich weiß, das ist wohl RFC-konform, weil bei HTTP 1.1 nur Cache-Control greifen sollte.
Nee, das stört mich jetzt nicht wirklich.Oldperl hat geschrieben: [*]Ja, die Variable $mod_gmt könnte ersatzlos entfallen, ist wohl irgendwann bei irgendwem mal während der Entwicklung übriggeblieben. Falls sie dich stört kannst du sie ja Löschen oder Auskommentieren.[/list]
Was ich ja sagen will, dass das Backend eben sagt, "cache mich". Und das halte ich für falsch.Oldperl hat geschrieben: Und nochmal zum eigentlichen Grund deines Ausfluges in den Contenido Core zu kommen, das Backend solltest du eigentlich garnicht Cachen, da es ja immerwährend dynamisch auf Daten zugreift, und für das Frontend würde ich den Header, falls wirklich technisch notwendig, in der zugehörigen FrontendSessionClass anpassen.
Grüße aus Nürnberg.Oldperl hat geschrieben: Gruß aus Franken
