Funktion:
CnC sucht in der fertig generierten Seite nach lokal verlinkten JavaScript und CSS-Dateien (Assets). Jedes "Asset" wird zunächst "minifiziert", wenn der Dateinamen nicht dem Schema *.min.* entspricht. Danach wird die optimierte Datei im Cache-Ordner des Plugins, mit dem Zeitstempel der Datei im Dateinamen, zwischengespeichert.
Von der "minifizierten" Version wird zusätzlich eine mit GZip komprimierte Variante dauerhaft gespeichert.
Die so modifizierten Dateien werden dann per PHP mit lange in die Zukunft gültigen Cache-Headern an den Browser gesendet. Beim erneuten Besuch werden die Dateien dann aus dem lokalen Cache des Browsers geladen, ansstatt erneut vom Server bezogen.
Bei Änderungen an den Dateien ändert sich auch der Zeitstempel und das Plugin verwirft die alte Variante und sendet stattdessen die neue Version an den Browser.
Zusätzlich kann CnC auch die Auslieferung der (dynamisch) von CMSimple_XH generierten Seite beschleunigen:
CnC aktiviert auf Wunsch die GZip-Komprimierung, was die Menge der zu übertragenden Daten erheblich verringert.
Zusätzlich ermöglicht es das Cachen der Seite: Aus dem Seiteninhalt wird eine eindeutige Kennung (Hash) generiert, der dem Browser als E-Tag beim Aufruf mit übermittelt wird.
Beim erneten Aufruf der Seite sendet der Browser das lokal gespeicherte E-Tag der Seite mit der Anfrage mit. Ist die Seite und somit das E-Tag noch identisch, lädt der Browser die lokal gespeicherte Version der Seite aus seinem Cache anstatt die gesamten Daten erneut vom Server zu laden. Hat sich der Seiteninhalt jedoch geändert, wird die aktuelle Seite analog ausgeliefert.
Installation:
wie üblich bei XH-Plugins den ZIP-Ordner entpacken und, unter Beibehaltung der Ordnerstruktur, auf den Server laden.
Der Ordner "/min" gehört in den Installationsordner von XH (gleiche Ebene wie /cmsimple oder /content). Der Rest gehört in den Plugin-Ordner (/plugins/cnc/*).
Voraussetzungen (siehe System-Prüfung):
- mindestens XH 1.7beta1 (es wird ein Hook benötigt, den es erst ab dieser Version gibt)
- PHP 5.4.0
- einige Standard-PHP-Erweiterungen
- der Cache-Ordner (/plugins/cnc/cache) muss für PHP beschreibbar sein
- Da die Assets durch PHP gesendet werden, ändern sich die Pfade und somit auch per Pfadangabe in Assets referenzierte Elemente. Das kann zum Beispiel in CSS-Dateien problematisch sein. Das Plugin versucht zwar die Pfade richtig anzupassen. Im Einzelfall kann es aber zu Problemen kommen. Sollten bei einzelnen Dateien Probleme auftreten, kann man sie in der Konfiguration des Plugins von der Bearbeitung ausschließen. Für CKEditor und TinyMCE ist das bereits in der Konfiguration eingetragen, da es in der Vergangenheit hier Probleme gab. Genaue Infos zu inkompatiblen Tools (auch zu den aktuellen Editor-Versionen sind willkommen).
- Auch kann es sein, dass die Seite bei PHP-Fehlermeldungen nicht mehr angezeigt werden kann (Content_Encoding_Error). Für den Fall sollte temporär die (HTML-) GZip-Kompression in der Konfiguration abgeschaltet werden.
Die Ausführung des Plugins lässt sich aber auch schnell und einfach per URL-Paramenter unterbinden. Eine Anfrage mit "&nocache" als URL-Parameter wird CnC kommentarlos deaktivieren und die Seite wird ausgeliefert, als wäre das Plugin nicht installiert. - Wenn offline gemachte Änderungen an JS- oder CSS-Dateien nicht erkannt werden liegt es vielleicht daran, dass die lokale Zeit hinter der Zeit auf dem Server eingestellt ist. Manche FTP-Programme ändern den Zeitstempel einer Datei beim Upload nicht. So kann es vorkommen, dass eine hochgeladene Datei scheinbar älter ist als die Version im serverseitigen Cache. In dem Fall kann man im Plugin den Cache-Ordner einfach leeren. Nachdem der browserseitige Cache geleert wurde (Strg+F5 sollte genügen), werden die Cache-Daten beim laden der Seite(n) neu generiert.
die aktuelle Version verringert die zu übertragende Datenmenge und implementiert Browser-Caching um eine CMSimple-Seite zu beschleunigen.
Was fehlt ist die Verringerung der Seitenanfragen am Server (Requests), was durch zusammenführen mehrerer Dateien zu einer Anfrage möglich ist. Zumindest teilweise ist das für eine kommende Version vorgesehen, sofern das Plugin erst einmal stabil funktioniert.
Cachen von Bildern etc. aus dem Userfiles-Ordner lässt sich per .htaccess auf Apache-Servern realisieren. Damit auch hier lange Gültigkeitsdaten verwendet werden können, könnte CnC an alle Verweise automatisch den Zeitstempel der Datei anhängen.
Ach ja, als Hilfe gibt es im Moment nur diesen Forums-Thread

Download v 1.0beta1: http://cmsimple.holgerirmler.de/downloa ... latest.zip
Nach der Installation lässt sich mit den Entwicklertools des Browsers (F12) im Tab "Netzwerk" gut nachvollziehen wie das Caching funktioniert und wie viel Bandbreite durch die Kompression der Daten gespart wird.
Credits: CnC ist mein erstes vollständig mittels OOP realisiertes Plugin - ich bitte deshalb um etwas Nachsicht
