Assets mit einem Timestamp ausliefern

!! Dieser Artikel ist veraltet !!

Die hier genannte Lösung ist sinnvoll bei REDAXO vor Version 5.3

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, 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 im 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">