12. September 2014
Redaxo ImageManager und Browser-Caching
Wenn ich meine Websites bei Googles PageSpeed Insights teste, stolpere ich immer wieder über die Empfehlung «Browser-Caching nutzen». Grund dafür sind via Redaxos ImageManager generierte Bilder.
Redaxos ImageManager schickt im HTTP-Header kein Ablaufdatum mit, womit der Browser nicht weiss wie lange ein Bild im Cache abgelegt werden darf. Das ist nicht optimal und somit bemängelt Google dies zurecht.
Das hinzufügen einer Zeile Code kann dieses Problem beheben:
header('Cache-Control: max-age=604800'); // 7 d * 24 h * 60 min * 60 sec
Damit wird der Browser angewiesen die Datei eine Woche lang im Cache zu behalten.
Die Funktion sendHeader() ist in der folgenden Datei ab Zeile 142 zu finden:
/redaxo/include/addons/image_manager/classes/class.rex_image.inc.php
public function sendHeader($params = array())
{
while (ob_get_level()) {
ob_end_clean();
}
header('Content-Disposition: inline; filename="' . $this->img['file'] . '"');
header('Content-Type: image/' . $this->img['format']);
header('Cache-Control: max-age=604800'); // 7 d * 24 h * 60 min * 60 sec
if (isset($params['Content-Length'])) {
header('Content-Length: ' . $params['Content-Length']);
}
}