media-Verzeichnis in BC2
Verfasst: Mo 5. Dez 2016, 13:28
Durch die Trennung von Engine und Site ergibt sich die Frage "wohin mit den Assets"?
Zur Erinnerung: Mit "Engine" ist das CMS als solches gemeint, also der Core (in BC1 wären das die Verzeichnisse framework, include, languages, backend und account) und die Erweiterungen wie Templates, Addons, Admintools. "Site" ist dann der Webauftritt mit seinen dazugehörigen Seiten. Bisher konnte man mit einer Installation auch immer nur eine Site betreiben und nur mit Klimmzügen z.B. mehrere Domänen oder voneinander unabhängige Teilbereiche realisieren.
Unter "Assets" verstehe ich hier in der Hauptsache Javascripts, Webfonts, CSS-Dateien und Medien wie Bilder, Videos usw. Für Javascripts, Webfonts und CSS haben wir bereits eine Lösung: Lokale JS- und CSS-Dateien werden automatisch zusammengefaßt und minimiert und das Resultat in das Site-Verzeichnis kopiert. In CSS-Dateien eingebundene lokale Webfonts werden ebenfalls umkopiert, so dass sie im htdocs-Verzeichnis liegen und somit ohne Probleme verwendet werden können. Von extern (z.B. Google) eingebundene Ressourcen sind davon unberührt. Dieses Verfahren führt zwar dazu, dass z.B. die CSS-Dateien von Modulen an mehreren Stellen zu finden sind, die Quelle ist aber immer dieselbe. Die Kopie im Site-Verzeichnis ist also nur eine Art Cache.
Bei Medien gibt es nun einige Aspekte, die auf die o.g. Assets nicht oder nur eingeschränkt zutreffen:
* Sie sind tendenziell viel größer als JS und CSS. Das Umkopieren einer zentral vorgehaltenen Videodatei etwa führt zum einen zu Performanceproblemen, zum anderen verschwendet es Plattenplatz.
* Mediendateien sind meistens sitespezifisch, das heißt sie werden nur an einer Stelle (in einer Site) benutzt. Insofern macht das zentrale Vorhalten mit all den daran hängenden Problematiken keinen Sinn.
Es macht also Sinn, das media-Verzeichnis - das ja bei einer reinen Core-Installation ohnehin leer ist - in das Site-Verzeichnis zu legen. Aber auch hier gibt es einige Haken und Ösen: Auch wenn es meistens nicht der Fall sein mag, kann es doch sein, dass Ressourcen in mehreren Sites verwendet werden, was wiederum zum oben beschriebenen Plattenplatz-/Duplikate-Problem führt. Man kann natürlich durchaus eine Video- oder Bilddatei aus einer anderen Site verlinken, das setzt aber zum einen voraus, dass man den Link kennt (okay, kein großes Problem), zum anderen müssen die Module - etwa Galerie-Module - darauf eingestellt sein. Das wiederum führt zu Berechtigungsfragen - wer darf media-Dateien anderer Sites sehen und benutzen?
FAZIT
In BC2 wird das media-Verzeichnis sitespezifisch sein. Medien, die in mehreren Sites verwendet werden sollen, müssen demnach auch mehrfach hochgeladen werden. (Es sei denn, der Provider bietet die Möglichkeit des "Softlinks". Dies wird aber dann nicht vom Core unterstützt werden, sondern muß von Hand gemacht werden.)
Zur Erinnerung: Mit "Engine" ist das CMS als solches gemeint, also der Core (in BC1 wären das die Verzeichnisse framework, include, languages, backend und account) und die Erweiterungen wie Templates, Addons, Admintools. "Site" ist dann der Webauftritt mit seinen dazugehörigen Seiten. Bisher konnte man mit einer Installation auch immer nur eine Site betreiben und nur mit Klimmzügen z.B. mehrere Domänen oder voneinander unabhängige Teilbereiche realisieren.
Unter "Assets" verstehe ich hier in der Hauptsache Javascripts, Webfonts, CSS-Dateien und Medien wie Bilder, Videos usw. Für Javascripts, Webfonts und CSS haben wir bereits eine Lösung: Lokale JS- und CSS-Dateien werden automatisch zusammengefaßt und minimiert und das Resultat in das Site-Verzeichnis kopiert. In CSS-Dateien eingebundene lokale Webfonts werden ebenfalls umkopiert, so dass sie im htdocs-Verzeichnis liegen und somit ohne Probleme verwendet werden können. Von extern (z.B. Google) eingebundene Ressourcen sind davon unberührt. Dieses Verfahren führt zwar dazu, dass z.B. die CSS-Dateien von Modulen an mehreren Stellen zu finden sind, die Quelle ist aber immer dieselbe. Die Kopie im Site-Verzeichnis ist also nur eine Art Cache.
Bei Medien gibt es nun einige Aspekte, die auf die o.g. Assets nicht oder nur eingeschränkt zutreffen:
* Sie sind tendenziell viel größer als JS und CSS. Das Umkopieren einer zentral vorgehaltenen Videodatei etwa führt zum einen zu Performanceproblemen, zum anderen verschwendet es Plattenplatz.
* Mediendateien sind meistens sitespezifisch, das heißt sie werden nur an einer Stelle (in einer Site) benutzt. Insofern macht das zentrale Vorhalten mit all den daran hängenden Problematiken keinen Sinn.
Es macht also Sinn, das media-Verzeichnis - das ja bei einer reinen Core-Installation ohnehin leer ist - in das Site-Verzeichnis zu legen. Aber auch hier gibt es einige Haken und Ösen: Auch wenn es meistens nicht der Fall sein mag, kann es doch sein, dass Ressourcen in mehreren Sites verwendet werden, was wiederum zum oben beschriebenen Plattenplatz-/Duplikate-Problem führt. Man kann natürlich durchaus eine Video- oder Bilddatei aus einer anderen Site verlinken, das setzt aber zum einen voraus, dass man den Link kennt (okay, kein großes Problem), zum anderen müssen die Module - etwa Galerie-Module - darauf eingestellt sein. Das wiederum führt zu Berechtigungsfragen - wer darf media-Dateien anderer Sites sehen und benutzen?
FAZIT
In BC2 wird das media-Verzeichnis sitespezifisch sein. Medien, die in mehreren Sites verwendet werden sollen, müssen demnach auch mehrfach hochgeladen werden. (Es sei denn, der Provider bietet die Möglichkeit des "Softlinks". Dies wird aber dann nicht vom Core unterstützt werden, sondern muß von Hand gemacht werden.)