Dies ist eine alte Version des Dokuments!
FH-Complete bietet die Möglichkeit das Caching Verwalten des Webbrowsers zu beeinflussen. Da es vermehrt zu Problemen mit dem Cachingverhalten des Webbrowsers kommt wurde ein Mechanismus implementiert der es ermöglicht nach Deployments Sicherzustellen dass User die neuen JS Dateien vom Server laden und nicht mit alten / gecachten Dateien arbeiten die teilweise über Tage hinweg im Cache bleiben.
Dazu gibt es unter application/config/config.php den Eintrag
fhcomplete_build_version
Diese wird als Parameter an JS Includes gehängt. Nach einem Deployment kann die Build Version angepasst werden auf einen neuen Wert. Dadurch wird sichergestellt dass die Dateien neu vom Webbrowser geladen werden und nicht mit veralteten (gecachten) Dateien gearbeitet wird.
Zusätzlich kann dieses Verhalten auch für Dynamisch nachgeladene Javascripts aktiviert werden. Dazu gibt es die in der Datei application/config/javascript.php die option
use_fhcomplete_build_version_in_path
Wenn diese auf true gesetzt wird, dann wird die fhcomplete-build-version automatisch bei Imports in den Pfad geschrieben was das Caching durch diverse Browser verhindert.
Der Pfad /public/js/DialogLib.js wird dann zu /public/2026030501/js/DialogLib.js Durch das Rewriting des Apache wird der Pfad zum korrekten File aufgelöst.
Damit die Konfiguration funktioniert muss das Apache Rewrite für den Public Ordner aktiviert werden. Das erfolgt entweder über die .htaccess Datei im Public Ordner →.htaccess_sample oder direkt in der /etc/apache/sites-enabled direktive der Seite. Für die .htaccess Variante muss im Apache VHost die Option „AllowOverride FileInfo“ gesetzt sein. Für produktiv Syste sollte kein htaccess sondern hat die Anweisung direkt im VHost stehen.
Achtung: Imports dürfen nur JS Files aus dem Public Ordner importieren und keine die Ausserhalb liegen da es sonst zu Problemem kommt. Vorsicht bei Pfaden die aus public heraus und wieder hinein zeigen. Das sollte nicht passieren da dies zu Problemen führt. Beispiel „../../../public/js/lehre/foo.js“