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']);
}
}