====== Server Caching deaktivieren ======
FH-Complete unterstützt versionierte JavaScript-URLs, um Browser-Caching nach Deployments zu umgehen. Dadurch lädt der Browser nach einem Deployment automatisch neue JS-Dateien statt veraltete Dateien aus dem Cache zu verwenden. Dazu gibt es die in der Datei /var/www/application/config/javascript.php die Option:
$config['use_fhcomplete_build_version_in_path'] = true;
Beispiel:
/public/js/components/foo.js wird automatisch zu /public/2026030501/js/components/foo.js
die Build-Version (2026030501) stammt aus: /var/www/application/config/config.php - $config['fhcomplete_build_version']
Apache Rewrite
Damit die versionierten URLs funktionieren, muss Apache die Build-Version intern wieder auf den echten Dateipfad auflösen. Eine entsprechende Rewrite Regel muss der Apache VHosts Konfiguration hinzugefügt werden. Alternativ kann dies auch über die .htaccess Datei in /var/www/public/ erfolgen (.htaccess_sample)
Options -Indexes +FollowSymLinks
AllowOverride None
Require all granted
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^[0-9]{10}/(.*)$ $1 [L]
RewriteCond %{REQUEST_URI} ^(.*?)/public/index.ci.php/
RewriteRule ^index.ci.php/(.*)$ %1/index.ci.php/$1 [R=303,L]
Beispiel intern:
/public/2026030501/js/foo.js wird zu /public/js/foo.js
Die URL im Browser bleibt dabei unverändert.
Wichtig bei JavaScript Imports
Imports dürfen nicht aus dem public-Pfad heraus und anschließend wieder nach public hinein navigieren.
Problematisch:
import Foo from '../../../../../../public/js/foo.js';
Dies kann bei aktivem URL-Rewrite zu fehlerhaften URLs wie:
/public/public/js/foo.js
führen. Stattdessen sollten absolute oder saubere relative Imports verwendet werden:
import Foo from '/public/js/foo.js';
Dadurch bleiben die Imports unabhängig von der Build-Version stabil.