it-swarm.com.de

Wie erzwinge ich das Löschen von Cache- / Browser-Daten im Browser?

Szenario: Ich habe ein altes Joomla! Website von 2.5 auf die neueste Version von Joomla !. Danach sieht die Seite aus meiner Sicht so aus, wie sie sein sollte. Wenn ich vor dem Upgrade versuche, von einem anderen PC auf die Site zuzugreifen, der zuvor auf die Site zugegriffen hat, scheint das CSS veraltet zu sein.

Lösung: Um das zu beheben, lösche ich den Cache und alle Browserdaten über den Browser und die Probleme sind behoben.

Präventionsmaßnahmen: Ich habe mir meine benutzerdefinierten Komponenten angesehen und habe keinen Cache-Speichermechanismus eingerichtet, daher habe ich Vermutung , dass dies ein browserseitiges Problem ist. Die Frage ist, wie kann ich das in Zukunft verhindern?

Begründung: Wenn meine vorherigen Benutzer auf die Site zugreifen, sieht alles schlecht aus und ich kann nicht erwarten, dass sie wissen, dass sie ihren Cache aktualisieren müssen.

Forschung:

Ich habe mir die Joomla-Versionierung angesehen ( https://www.joomlart.com/tutorials/joomla-tutorials/tutorial-how-to-enable-content-versioning-in-joomla-site )

Ich habe mir das Löschen des Caches angesehen ( https://forum.joomla.org/viewtopic.php?t=949662 )

Nichts scheint eine konkrete Lösung zu sein.

Wenn es ein "Best Practice" für diese Art von Situationen gibt, teilen Sie es bitte mit. Ich würde mich freuen, alles darüber zu erfahren.

4
Nick

Ich war schon oft mit dem gleichen Problem konfrontiert. In der Zwischenzeit habe ich erfahren, dass man Browser zwingen kann, seinen Cache zu leeren nur durch Versionsverwaltung wird geladen kann. Sie müssen also herausfinden, wo Ihre Vorlage die CSS-Dateien lädt, und am Ende des Ladebefehls eine Art Versionszeichenfolge wie "? V = xxx" hinzufügen. Sobald der Browser die Zeichenfolge der vorherigen Version zwischengespeichert hat, können Sie das erneute Laden des Assets erzwingen, indem Sie einfach die Versionsnummer ändern, indem Sie sie erhöhen.

Das ist nur "Best Practice", von dem ich weiß. Bisher gibt es kein System-Plugin, das diesen Vorgang automatisieren kann. Sie müssen dies also manuell tun, indem Sie die .php-Datei der entsprechenden Vorlage bearbeiten, die ihre Assets lädt (normalerweise eine Art index.php).

Der gleiche Trick kann auch zum erneuten Laden von .js-Dateien verwendet werden, sie sind jedoch nicht Teil Ihrer Frage und Ihres Anliegens.

4
Mikan

Sie können mediaVersion verwenden. Dafür gibt es einige Möglichkeiten. Schauen Sie sich diese 2 an:

Manuelles Hinzufügen der Version zu geladenen Dateien: $v = JFactory::getDocument()->getMediaVersion()

JHtml Versionierung geladener Dateien:

// Add script
JHtml::_('script', 'xxx.js', array('version' => 'auto'));
// Add Stylesheets
JHtml::_('stylesheet', 'xxx.css', array('version' => 'auto'));
3
Alexandr

Die einzige Möglichkeit, den Cache von Client-Browsern zuverlässig zu löschen, besteht darin, den Namen des betreffenden Assets zu ändern. Erzwingen, dass alle Browser es herunterladen.

1
Seth Warburton

Mit JCH Optimize können Sie die Bereitstellung aller Skriptdateien kombinieren und optimieren - CSS und Java. Jede kombinierte Datei erhält einen neuen Namen, wenn Sie den Cache im Plugin leeren.

Ich benutze immer die PRO-Version, die extrem effektiv ist und das ganze Geld wert.

1
KlintWeb

Fügen Sie den Zeitstempel der Datei als Parameter hinzu, damit die Datei nicht zwischengespeichert wird.

$mtime = filemtime('/path/to/script/script.js');
JFactory::getDocument()->addScript('/url/of/script/script.js?t='.$mtime);
1
Nagarjun