GX-Task #48657
geschlossenJavaScripte im Honeygrid werden durch andere Einbindung gecached, was zu einer besseren Performance führt
100%
Beschreibung
Die JavaScripte vom Honeygrid werden ab GX 3.3.1 nicht mehr über die gm_javascript.js.php geladen, sondern direkt als .js-Datei, um die PHP-Interpretation zu sparen und das Browsercaching zu nutzen. Dazu wird die Datei templates/Honeygrid/assets/javascript/init.min.js von der Klasse ApplicationBottomExtenderComponent erzeugt. Die init.min.js beinhaltet die JSEngineConfiguration und alle JavaScripte, die vor den JS-Usermods eingebunden werden müssen:
JSEngine/build/vendor.min.js
templates/Honeygrid/assets/javascript/vendor.min.js
JSEngine/build/jse.min.js
templates/Honeygrid/assets/javascript/initialize_template.min.js
templates/Honeygrid/assets/javascript/template_helpers.min.js
Die init.min.js wird mit einem Busting-Paramter (bust=abc124) eingebunden. Nach Leeren des Modulcaches ändert sich der Parameter. Dies führt dazu, dass die Datei neu erzeugt und vom Browser neu angefragt wird.
Die gm_javascript.js.php wird nur noch eingebunden, wenn JavaScript-Usermods existieren. Andernfalls entfällt die Einbindung, was wieder Performancegewinn bedeutet.
Zum Schluss wird die JSEngine/build/require.min.js eingebunden. Auch hier gibt es das Cache-Busting.
Im Entwicklermodus (.dev-environment Datei existiert) werden alle JavaScripte einzeln eingebunden, um volles Debugging zu ermöglichen.
Im Template wurden keine Änderungen durchgeführt. Es wurden nur folgende Dateien angepasst:
gm_javascript.js.php
system/extender/ApplicationBottomExtenderComponent.inc.php
Neu ist ebenfalls, dass der Ordner templates/Honeygrid/assets/javascript beschreibbar sein muss.
Zugehörige Tickets