Assets mit einem Timestamp ausliefern
Die hier genannte Lösung ist sinnvoll bei REDAXO (Backend) vor Version 5.3 und für das Frontend alle Versionen
Bei sich häufiger ändernden Assets wie CSS- oder Javascript-Dateien hat man gelegentlich das Problem, dass der Besucher noch eine alte Version sieht, die sich in seinem Browser-Cache befindet. Hier hilft es, einen Cachebuster zu nutzen, also den Zeitpunkt der letzten Änderung mit an den Dateinamen anzuhängen. Wenn dann der Browser beim Laden der Seite eine vermeintliche andere Datei findet, wird er diese neu laden.
Funktion einbinden
Diese Funktion wird am besten in die boot.php
des Project-AddOn hinterlegt oder in der functions.php
des Theme-AddOns:
function stamp_file ($filename_with_path) {
$file = rtrim(rex_path::base(),'/').$filename_with_path;
if (!$ftime = @filemtime($file)) {
return $filename_with_path;
}
return $filename_with_path.'?time='.$ftime;
}
Asset-Datei mit Timestamp aufrufen
Die CSS- oder JS-Datei kann so aufgerufen werden:
<link rel="stylesheet" href="<?= stamp_file('/css/styles.css') ?>" media="screen,print">
Ausgabe
In der Ausgabe erscheint dann z.B. Folgendes:
<link rel="stylesheet" href="/css/styles.css?time=1555251723" media="screen,print">