it-swarm.com.de

Wie verwende ich die integrierte Cache-Busting-Technik von Joomla für Skripte und Stylesheets?

JHtml :: script und JHtml :: stylesheet haben eine Cache-Busting-Technik, die nicht klar dokumentiert zu sein scheint. Wie benutze ich es?

4
Flimm

Ja, es gibt eine integrierte Cache-Busting-Technik. Wenn Sie es verwenden, sieht Ihr HTML folgendermaßen aus:

<script src="/media/path/foo/bar.js?32af2f62db6e60053132340acc9dfb3c" type="text/javascript"></script>

So funktioniert die Cache-Busting-Technik:

Dies funktioniert, indem bei jeder Änderung der Datei eine andere Zeichenfolge in den URL-Abfrageabschnitt eingefügt wird. Auf diese Weise hat der Browser keinen zwischengespeicherten Eintrag für diese nie zuvor gesehene URL und muss ihn erneut abrufen. Joomla und Ihr Server sind bereits so konfiguriert, dass der Abfrageteil der URL beim Bereitstellen statischer Dateien ignoriert wird.

So setzen Sie es um:

So verwenden Sie es:

JHtml::_("script", "path/foo/bar.js");

Oder:

JHtml::_("stylesheet", "path/foo/bar.css");

(Beachten Sie, dass die Verwendung von addStyleSheet und addScriptnicht funktioniert. Sie müssen stattdessen JHtml::script Und JHtml::stylesheet Verwenden.)

Stellen Sie dann sicher, dass das Verzeichnis, das die Datei enthält (path/foo), Eine Datei mit dem Namen MD5SUM Enthält (nichtMD5SUMS). Diese Datei enthält die Zeichen, die mit einem ? An die URL angehängt werden. Es muss keine MD5SUM-Prüfsumme sein, es kann alles Mögliche sein, aber die Absicht ist, dass es eine Prüfsumme der Dateien in diesem Verzeichnis enthält. Leider gibt es keine Möglichkeit, für jede Datei in diesem Verzeichnis eine eigene Prüfsumme zu erstellen. Wenn das Cache-Busting mit dieser Technik funktionieren soll, muss sich die Prüfsumme für alle Dateien in diesem Verzeichnis ändern.

So erstellen Sie es unter Linux über die Befehlszeile: Fügen Sie in Ihrem Build-Skript wahrscheinlich Folgendes hinzu, wenn Sie eines haben:

cd path/foo
find . -maxdepth 1 -type f -not -name MD5SUM -exec md5sum "{}" ";" | sort | md5sum  > MD5SUM

Dadurch wird die MD5SUM-Prüfsumme jeder Datei in diesem Verzeichnis erstellt (mit Ausnahme von MD5SUM, um eine Rückkopplungsschleife zu vermeiden), und anschließend wird die gesamte Ausgabe von MD5SUM in einer letzten Datei MD5SUM Gespeichert.

(Standardmäßig enthält der Befehl md5sum Dateinamen und Zeilenumbrüche, sollte aber trotzdem funktionieren.)

4
Flimm