Hallo Forum,
nichts ist so gut, als dass es nicht noch besser gemacht werden kann. Auch für CMSms gibt es eine ganze Reihe an Möglichkeiten, die Performance zu optimieren. Diese werden im folgenden näher erläutert:
HINWEIS: Wenn in einem Optimierungs-Tipp auf eine bestimmte Zeile im Quellcode verweist, kann sich diese unter Umständen in einer neuen Version von CMSms bereits geändert haben - also genau hinschauen!C wie config.phpHierarchische URLsSeit Version 0.13 kann CMS made simple die URLs entsprechend der Seitenstruktur hierarchisch anzeigen, also zum Beispiel so
http://www.webseite.de/uebergeordnete_seite/untergeordnete_seiteDies sieht zwar schön aus, kostet aber auch Performance. Schneller ist die (Standard)-Einstellung:
$config['use_hierarchy'] = false;
Persistente VerbindungenÜber die config.php kann festgelegt werden, wie CMSms sich mit der Datenbank verbinden soll. Dies erfolgt über den Parameter $config['persistent_db_conn']. Standard ist false.
Persistente Verbindungen sind SQL-Verbindungen, die nach Abarbeitung des Skriptes nicht geschlossen werden. Wird eine persistente Verbindung angefordert, prüft PHP, ob bereits eine identische persistente Verbindung (die vielleicht vorher offen geblieben ist) existiert und benutzt sie in diesem Fall. Sollte keine Verbindung existieren, wird eine hergestellt.
Daher kann die folgende Einstellung zur Beschleunigung beitragen:
$config['persistent_db_conn'] = true;
Weitere Informationen: http://www.php-resource.de/manual.php?p=features.persistent-connectionsACHTUNG: Dieser Wert wird nicht von allen Providern erlaubt und kann zu Problemen führen.
"Schöne" Pretty URLsHier gilt das gleiche wie bei der Option "Hierarchische Seitenanzeige". Die schnellste Einstellung ist auch hier der bereits vorgegebene Systemstandard:
$config['internal_pretty_urls'] = false;
HINWEIS: Damit die Änderungen an der config.php wirksam werden, MUSS der Zwischenspeicher gelöscht werden (Administration, Menü 'Administrator > Globale Einstellungen').
C wie contentcache.phpVor einiger Zeit wurde die Datei contentcache.php eingeführt, die im Verzeichnis /tmp/cache angelegt wird. Darin ist serialized die Hierarchie aller Inhalte einer Webseite enthalten. Das sollte eigentlich zu einer Beschleunigung führen, tut es aber nicht.
Um die Erstellung der Datei zu deaktivieren, muss in der Datei class.contentoperations.inc.php aus dem Verzeichnis /lib/classes/ die Zeile 497 von
$usecache = true;
auf
$usecache = false;
geändert werden.
Quelle: http://forum.cmsmadesimple.org/index.php/topic,7645.0.htmlE wie ErweiterungenCMS made simple wird durch Module (Verzeichnis /modules, siehe Administration, Menü 'Erweiterungen > Module') und Tags (Verzeichnis /plugins, siehe Administration, Menü 'Erweiterungen > Tags') erweitert.
Es gibt gute Gründe, ein Modul für eine bestimmte Aufgabe einzusetzen. Wenn man aber die Auswahl hat, entweder ein Modul oder einen Tag einzusetzen, ist der Tag die schnellere und ressourcenschonendere Lösung.
Ein gutes Beispiel dafür ist ein Kontaktformular. Dafür kann entweder das FormBuilder- / das FeedbackForm-Modul verwendet oder aber der contact_form-Tag modifiziert werden.
I wie index.phpKomprimierung des OutputsWenn euer Provider zip-Unterstützung bietet (was sich mit dem phpinfo()-Befehl leicht herausfinden lässt), dann ist die folgende Änderung schon fast Pflicht:
Öffnet die Datei index.php in einem Editor und geht dort zu Zeile 35. Dort sollte etwas in dieser Art stehen:
@ob_start();
Je nach Serverausstattung ist die Datei wie folgt zu ändern:
@ob_start('gzhandler');
@ob_start('ob_gzhandler');
@ob_start('gz_handler');
Einfach ausprobieren ...
Was genau passiert da? Der Server wird angewiesen, jede Datei mit dem zip-Kompressionsalgorithmus zu komprimieren und erst dann zu versenden. Die komprimierte Datei wird dann vom Browser wieder entpackt und angezeigt. Aufgrund der Kompression werden die Dateien kleiner, es wird Bandbreite gespart und die Datei ist scheinbar schneller auf dem Rechner.
Auch die Administration lässt sich damit beschleunigen. Dazu muss die Datei admin/header.php mit einem Editor geöffnet und die Zeile 5 wie oben beschrieben geändert werden.
ACHTUNG: Wird das TinyMCE-Modul verwendet (welches ebenfalls die zip-Kompression verwenden kann), kann es zu Problemen kommen. Die TinyMCE-Kompression muss in diesem Fall deaktiviert werden.
Setzen des HTTP-Cache-HeadersIm HTTP-Header einer jeden html-Seite kann festgelegt werden, wie lange eine Seite im Browser des Webseiten-Besuchers gecacht/zwischengespeichert werden soll. Dieser Wert kann zum einen in der index.php eingetragen werden.
Fügt dazu hinter die Zeile 282 (CMSms 1.0.7) folgendes ein:
header("Cache-Control: public, max-age=60, s-maxage=60");
Damit wird die Seite für 60 Sekunden zwischengespeichert. Diese Werte können natürlich entsprechend den Bedürfnissen angepasst werden, was es für relativ statische Seiten besonders interessant macht.
HINWEIS: Diese Änderung empfiehlt sich
nicht bei dynamisch erzeugten Seiten (Verwendung des FrontendUser- / CustomContent-Moduls u.a.).
Wer trotzdem nicht auf diese Möglichkeit verzichten möchte, kann für diesen Zweck auch individuell für jede Seite Meta-Tags einsetzen. Der entsprechende Metatag sieht wie folgt aus:
Überprüfung der Kompilierung durch Smarty abschaltenBei jedem Aufruf der Webseite prüft Smarty, ob seit dem letzten Aufruf Änderungen am verwendeten Template vorgenommen wurden. Ist dies der Fall, wird das Template neu kompiliert, unabhängig davon welchen Wert die Variable '$compile_check' hat. Der Wert dieser Variablen ist standardmäßig 'true'.
Im produktiven Einsatz (=die Templates ändern sich nicht mehr) ist jedoch die Überprüfung der Kompilierung nicht erforderlich. Um die Performance zu steigern, muss in der index.php die Zeile 241 (CMSms 1.0.7) von
$smarty->compile_check = true;
in
$smarty->compile_check = false;
geändert werden.
ACHTUNG: Werden nach dieser Änderung an der index.php Templates modifiziert, werden diese NICHT übernommen; der Zwischenspeicher MUSS manuell gelehrt werden (Administration, Menü Administrator > Globale Einstellungen).
Quelle: http://smarty.php.net/manual/de/variable.compile.check.phpM wie ModuleCMS made simple wird mit 8 Modulen ausgeliefert. Diese befinden sich im Ordner /modules und werden durch die Installationsprozedur automatisch installiert. Beim Start von CMSms (=Besuch der Webseite) werden alle Module geladen.
Aus diesem Grund sollten alle nicht benötigten Module deinstalliert (oder noch besser, erst gar nicht mit auf den Server geladen

) werden.
Dazu ein paar Entscheidungshilfen:
CMSmailerDieses Modul stellt die Funktionen des PHPMailers
http://phpmailer.sourceforge.net/für CMSms-Module bereit. Zum Beispiel wird es vom Modul Guestbook verwendet, um nach Erstellung eines neuen Eintrages eine Benachrichtigungen an den Administrator zu versenden.
Beim mitgelieferten Tag {contact_form} erfolgt der Mailversand über die php-eigene mail()-Funktion. Das CMSMailer-Modul wird in diesem Fall nicht benötigt und kann deinstalliert / gelöscht werden.
ModulManagerMit diesem Modul wird ein zentrales Verzeichnis abgefragt, welche Module als XML-Datei importiert werden können und anschließend als Liste angezeigt. Die Module können dann direkt installiert und aktualisiert werden.
Bei manchen Betriebssystem mögen ja häufige Updates zwingend erforderlich sein. Für ein CMS im produktiven Einsatz ist dies jedoch nach meinem Verständnis flüssiger als Wasser – nämlich überflüssig und kann/sollte daher deinstalliert / gelöscht werden.
HINWEIS: Diese Funktionalität wird nicht von jedem Hoster erlaubt. Außerdem wird mit dieser Art des Imports der Server Eigentümer der Dateien. Dies hat zur Folge, dass beim Zugang via FTP o.ä. diese Dateien nicht angezeigt werden (fehlende Berechtigung).
Wer trotzdem Gefallen am Import von Modulen als XML-Datei gefunden hat (ohne FTP-Zugang), kann diese auch ohne den ModulManager verwenden; einfach die XML-Datei lokal auf dem Rechner abspeichern und dann via Administration (Menü 'Erweiterungen > Module') auf den Server laden.
NuSOAPDieses Modul stellt die SOAP-Funktionen für CMSms-Module bereit. SOAP (ursprünglich für Simple Object Access Protocol) ist ein Protokoll, mit dessen Hilfe Daten zwischen Systemen ausgetauscht und Remote Procedure Calls durchgeführt werden können.
Quelle/weitere Informationen: http://de.wikipedia.org/wiki/SOAPDiese Funktionalität wird nur von ModulManager benötigt. Wer diesen bereits deinstalliert/gelöscht hat, kann auch dieses Modul entfernen.
ThemeManagerMit dem ThemeManager lassen sich Templates als .xml-Datei ex- und importieren. Diese Datei enthält alle benötigten Daten (Templates, Stylesheets, Bilder, Javascripts). Da auf einer Seite im produktiven Einsatz die Templates nur selten gewechselt werden, kann das Modul deinstalliert / gelöscht werden.
M wie MySQLAuch MySQL kennt Methoden, um die Kommunikation mit der Datenbank zu komprimieren und damit zu beschleunigen. Dies wird auch vom in CMSms eingesetzten Datenbank-Layer AdoDB lite unterstützt.
Aktiviert wird die Kompression wie folgt:
1. Die Datei /lib/adodb.functions.php mit einem Editor öffnen
2. Zur Zeile 56 gehen (CMSms Version 1.0.5)
$dbinstance =& ADONewConnection($config['dbms'], 'pear:date:extend:transaction');
3. Die folgende Zeile einfügen
$dbinstance->clientflags = MYSQL_CLIENT_COMPRESS;
4. Abspeichern
S wie ServerwahlWenn ihr die Auswahl hab, ob eure Seite unter einem Apache Server/Linux oder unter IIS/Microsoft laufen soll, lautet die Empfehlung ganz klar Apache/Linux. Bilder sagen mehr als Worte:
http://blogs.zdnet.com/threatchaos/?p=311Ist zwar in englisch, aber die Bilder zeigen das wichtigste, nämlich die erforderlichen System-Aufrufe des Apache und des IIS. Ergo, bei diesem "Strickmuster" kann IIS nicht schneller als der Apache sein

.
S wie Server-OptimierungNeben den hier genannten Möglichkeiten der CMSms-"internen" Optimierung kann auch eine Optimierung des Servers selbst eine erhebliche Beschleunigung bewirken:
Apache-Modul mod_cacheÜber dieses Modul werden die Ausgaben des Servers in einem Zwischenspeicher abgelegt und stehen daher schneller zum Abruf bereit. Der Einsatz dieses Moduls kann das System um 20-40 % beschleunigen. Weitere Infos dazu gibts hier
http://httpd.apache.org/docs/2.0/mod/mod_cache.htmlDer Dank geht an PierreM.
Apache-Modul mod_expiresAuch via .htaccess-Datei lassen sich auch bestimmte Elemente wie etwa Bilder, CSS und JavaScript cachen. Hier dazu ein Beispiel:
ExpiresActive on
ExpiresByType image/gif "access plus 6 months"
ExpiresByType image/jpeg "access plus 6 months"
ExpiresByType image/png "access plus 6 months"
ExpiresByType text/css "access plus 6 months"
ExpiresByType text/javascript "access plus 6 months"
ExpiresByType text/html "access plus 1 day"
ExpiresByType application/x-javascript "access plus 6 months"
<Files ~ "\.(js|css|gif|jpg|png)$">
Header append Cache-Control "public"
</Files>
Weitere Infos dazu gibts hier
http://httpd.apache.org/docs/2.0/mod/mod_expires.htmlMit dem folgenden Link kann geprüft werden, welche Bedingungen für das Cachen von Elementen gesetzt werden könnten
http://www.ircache.net/cgi-bin/cacheability.pyDer Dank geht an faglork.
Und hier noch ein Link zum Verständnis des Cachens/Zwischenspeicherns (englisch)
http://www.mnot.net/cache_docs/eAcceleratorWer CMSms auf einem eigenen Server/vServer bzw. Zugriff auf die Installation hat oder sich mit dem Admin gut versteht, sollte sich diese Erweiterung mal näher anschauen
http://eaccelerator.net/Damit werden vereinfacht gesagt die PHP-Scripte optimiert und zwischengespeichert, um deren Abarbeitung zu beschleunigen und den Server zu entlasten. Hiermit sind nach Angaben des Autors Beschleunigungen bis zum Faktor 10 möglich.
Zend OptimizerÄhnlich wie der eAccelerator, nur 'ne Nummer größer. Wer sich für seine CMSms-Seite einen eigenen Server/vServer gönnt, kommt am Zend Optimizer für den Apache Webserver nicht vorbei
http://www.zend.com/de/downloadsS wie SmartySmarty, die von CMSMS eingesetzte Template-Engine, bringt auch eine ganze Reihe von nützlichen Erweiterungen/Plugins mit. Diese sind im Verzeichnis /lib/smarty/plugins zu finden. Häufig führen sie ein Schattendasein, werden aber bei jedem Start von CMSms mit abgefragt.
Soweit ihr nicht Module verwendet, die bestimmte Tags aus diesem Verzeichnis benötigen (wie zum Beispiel das News-Modul), wäre das Löschen dieser Tags noch ein Optimierungspotential.
Aber VORSICHT - ihr solltet hier sehr genau wissen, was ihr tut.
T wie TagsVon dem Problem, über das bereits im Abschnitt „Module“ gesprochen wurde, sind auch die Tags betroffen. Beim Start wird das komplette /plugins-Verzeichnis gelesen. Daher empfiehlt es sich, auch hier nur die benötigten Tags in dem Verzeichnis zu belassen. Hier ist es schwieriger, konkrete Empfehlungen zu geben, da jeder einen anderen Bedarf hat.
Im folgenden hab ich mal eine Hitliste meiner persönlichen „Löschkandidaten“ erstellt, die ich nicht bzw. selten verwende:
function.adsense.php
function.bulletmenu.php
function.cms_version.php
function.cms_versionname.php
function.edit.php
function.embed.php
function.google_search.php
function.googlepr.php
function.html_blob.php
function.image.php
function.ImageGallery.php
function.valid_css.php
function.valid_xhtml.php
Tags, die nur bei Bedarf vorhanden sind:
function.contact_form.php
function.created_date.php
function.current_date.php
function.description.php
function.last_modified_by.php
function.menutext.php
function.modified_date.php
function.recently_updated.php
function.sitemap.php
function.sitename.php
U wie use_sub_dirsFür die folgende Optimierung muss die Datei admin/lib/content.functions.php Zeile 54/55 bearbeitet werden:
//use_sub_dirs doesn't work in safe mode
//if (ini_get("safe_mode") != "1")
// this->use_sub_dirs = true;
wird geändert in
//use_sub_dirs doesn't work in safe mode
if (ini_get("safe_mode") != "1")
this->use_sub_dirs = true;
Diese Einstellung sollte individuell ausgetestet werden, da dies nicht auf jedem Server funktioniert.
Ü wie ÜbersetzungenCMS made simple ist gegenwärtig in 33 Sprachen verfügbar, die bei der Installation mitgeliefert werden. Das wäre grundsätzlich kein Problem, wenn nicht auch die Übersetzungen (wie bereits die Module) beim Start einer Webseite komplett geladen würden.
Im Laufe der Entwicklung ist die Verzeichnisstruktur der Module mehrfach geändert worden, von /modules/ein_modul/lang/de_DE.php über /modules/ein_modul//lang/de_DE/de_DE.php bis aktuell zu /modules/ein_modul/lang/ext/de_DE.php.
In der Administration ist es ähnlich. Im Verzeichnis /admin/lang/ finden sich Dateien in dem Format de_DE.nls.php sowie im Unterverzeichnis /admin/lang/ext/de_DE die Datei admin.inc.php.
Wer nur deutsch verwendet, kann daher alle Sprachdateien außer Deutsch (und vielleicht noch Englisch) löschen.
X wie xhtmlCMS made simple ist von Natur aus ein xhtml-CMS. Daher sollte bei Templates und Inhalten darauf geachtet werden, dass sämtliche Seiten xhtml-valid ("wohlgeformt") sind.
Eigentlich logisch, dass sauberer Code schneller angezeigt wird als fehlerhafter, bei dem der Browser erst überlegen muss, was er wie anzeigen soll.
Die Überprüfung sollte
immer erfolgen, da die für CMS made simple verfügbaren WYSIWYG-Editoren nicht oder nur bei bestimmten Voreinstellungen xhtml-validen Code erzeugen.
Dies kann online über den Link
http://validator.w3.org/oder offline mit dem Browser Firefox und der Erweiterung
HTML Tidy -
https://addons.mozilla.org/firefox/249/geprüft werden.
In der Summe sollte eure Seite jetzt ein ganzes Stückchen schneller sein.