Google Page Speed - mit Cache

Joomla + LiteSpeed Cache = Speed

Um die Performance der Websites unserer Kunden auch bei hohem Besucheraufkommen zu maximieren, verwenden wir bei NOVATREND seit fast zwei Jahren den LiteSpeed Webserver. Damals haben wir dabei auch entschieden, die Sicherheit und die Vertrauenswürdigkeit der Kundenwebsites durch die einfache und kostenlose Bereitstellung von SSL Zertifikaten zu erhöhen.

Die Übertragung von verschlüsselten Websites ist komplexer als die Übertragung unverschlüsselter Websites und von daher langsamer. Durch den Einsatz des LiteSpeed Webservers konnte dieser Nachteil allerdings mehr als ausgeglichen werden. Die verschlüsselten Websites laufen unter dem LiteSpeed Webserver schneller als die unverschlüsselten Sites unter anderen Servern. Wir haben den Effekt in einem ausführlichen Blogpost mit Geschwindigkeitsmessungen dokumentiert: Schnellere Antwortzeiten mit dem LiteSpeed Web Server.

Im letzten Jahr wurde dann PHP 7 released. Die Version 7 gab der gesamten PHP Welt einen Leistungsschub und wir berichteten über die  Kombination WordPress + PHP7 + LiteSpeed Cache = Richtig Schnell! Neben dem WordPress Plugin gibt es auch ein Plugin für Magento. Weitere Plugins sollen folgen.

Es geht auch ohne Plugin!

Um in den Genuss einer Geschwindigkeitssteigerung durch den LiteSpeed Cache zu kommen, müssen nur wenige Kommandozeilen in die .htaccess Datei eingetragen werden. Das hört sich kompliziert an, ist aber ganz einfach.

LiteSpeed Cache für Joomla konfigurieren

Um die Joomla Konfiguration für den Einsatz des LiteSpeed Caches durchzuführen, musst du die .htaccess Datei deiner Joomla Installation in einem Editor öffnen. Die Datei befindet sich im root Verzeichnis deiner Joomla Installation.

.htaccess Datei im Joomla Verzeichnis
.htaccess Datei im Joomla Verzeichnis

In der Zeile 64 findest du folgende Zeile:

## Begin - Joomla! core SEF Section.

Direkt davor musst du die folgenden Kommandos einfügen und natürlich meine Testdomain joomla.seafolly.ch durch deinen Domainamen austauschen:

## End - Rewrite rules to block out some common exploits.
<IfModule LiteSpeed>
 CacheDisable public /
 RewriteEngine On
 RewriteCond %{REQUEST_METHOD} ^HEAD|GET$
 RewriteCond %{HTTP_HOST} ^joomla.seafolly.ch$ [NC,OR]
 RewriteCond %{HTTP_HOST} ^www.joomla.seafolly.ch$ [NC]
 RewriteCond %{HTTP_COOKIE} !loginuser
 RewriteCond %{ORG_REQ_URI} !^/index.php$
 RewriteCond %{ORG_REQ_URI} !administrator
 RewriteCond %{ORG_REQ_URI} (\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$ [NC]
 RewriteRule .* - [E=Cache-Control:max-age=120]
</IfModule>
########## End - Litespeed cache

Du musst entscheiden, wie lange der Cache erhalten bleiben soll. Im Beispiel beträgt die Haltbarkeit 120 Sekunden. Das wird durch diesen Befehl ausgedrückt:

RewriteRule .* - [E=Cache-Control:max-age=120]

Je nachdem, wie deine Website aufgebaut ist, kannst du diese Zeit verändern. Eher statische Websites mit gleich bleibenden Seiteninhalten können auch länger gecached werden. Sites mit vielen dynamischen Elementen, wie beispielsweise Kommentaren, benötigen unter Umständen eine kürzere Cache Haltbarkeit, damit aktuelle Kommentare schnell auf der Seite erscheinen.

Funktioniert alles?

Es gibt mehrere Methoden zu überprüfen, ob der LiteSpeed Cache korrekt funktioniert.

  • Zunächst sollte deine Seite nach ein paar mal „hin- und herklicken“ deutlich schneller laden. Das „hin- und herklicken“ dient dazu, den Cache zunächst testweise aufzubauen. Auf einer gut besuchten Site erfolgt der Aufbau des Caches sehr schnell und automatisch über die Aufrufe der Besucher.
  • Wenn der Cache funktioniert, befinden sich im lscache Verzeichnis Dateien wie diese:
LiteSpeed Cache Dateien
LiteSpeed Cache Dateien
  • Der LiteSpeed Server liefert den Header X-LiteSpeed-Cache: hit an deinen Browser aus. Das kannst du einfach, beispielsweise im Chrome Browser, überprüfen (Inspect -> Network -> All -> Deine Domain):
    Header im Chrome Browser
    Header im Chrome Browser

Hausputz

Einmal pro Tag wird dein LiteSpeed Cache von uns automatisch geleert. Wenn du willst, kannst du die abgelaufenen Cache Dateien auch öfter löschen. Dazu erstellst du dir einfach einen Cronjob mit folgendem Inhalt:

*/10 * * * * find /home/seafoll1/lscache -type f -mmin +8 -delete 2>/dev/null

Der Name seafoll1 muss durch den Namen deines Webhostings ersetzt werden. In diesem Beispiel löscht der Cronjob alle 10 Minuten (*/10) die Dateien, die älter als 8 Minuten (-mmin +8) sind.

Wie funktioniert der Cache und was sagt Google dazu?

In einem Cache werden Seiten oder Teilbereiche von Seiten als Datei abgespeichert.

  • Mit LiteSpeed Cache liefert der Webserver die gecachete Seite ohne einen Datenbankzugriff aus.
  • Ohne LiteSpeed Cache wird die Site auf herkömmliche Art ausgeliefert (PHP wird interpretiert und fragt bei der Datenbank an). Diese Variante dauert länger.

Um den Effekt zu verdeutlichen, schalte ich in der Joomla Administration den Debug Mode an.

Joomla Debug
Joomla Debug

Wenn ich nun auf das Joomla Frontend zugreife, erscheinen unten Informationen zum Systemzustand (Joomla Debug Konsole). Dort wird neben anderen Informationen auch die Anzahl der durchgeführten Datenbankabfragen und deren Dauer angezeigt.

Joomla Debug Konsole
Joomla Debug Konsole

Um die Standard Startseite einer „frischen“ Joomla Installation anzuzeigen, wird 24 mal auf die Datenbank zugegriffen. Das dauert in meinem Fall 16.43 Millisekunden.

Jetzt kommt Google ins Spiel. Googles Page Speed Tools sind oft wichtig in Kundengesprächen. Neben anderen Parametern zeigen sie die Server Response Time als Möglichkeit an, die Performance deiner Website zu erhöhen.

Google Page Speed
Google Page Speed

In diesem Fall beträgt die Server Response Time 0.27 Sekunden. Die Zeit, die Joomla benötigt um in der Datenbank zu suchen, ist 0.01643 Sekunden. Ohne den Datenbankanteil müsste die Auslieferung der Site um diesen Betrag schneller sein. Ich konfiguriere den LiteSpeed Cache und siehe da: die Meldung bezüglich der Server Response Time verschwindet, die Punktzahl erhöht sich sogar um einen Punkt. Andere Möglichkeiten des Tunings werden angezeigt.

Google Page Speed - mit Cache
Google Page Speed – mit Cache

Hinweis: Es handelt sich bei diesem Beispiel um die einfachste mögliche Joomla Installation. Bei jeder individuellen Joomla Installation ist der Effekt größer! Außer dem Seitencache spielen auch zahlreiche andere Faktoren bei Google Page Speed eine Rolle. 

Nun denkt man sich vielleicht

Hhm … einen Punkt besser, das haut mich aber nicht um!

Der eine Punkt ist nicht das Ziel. Das Ziel ist die Server Response Time so niedrig wie möglich zu bekommen, so dass Google gar nicht auf die Idee kommt, dass es noch schneller funktionieren könnte. Je mehr Teile vom Server geladen werden, und das sind bei aktuellen Websites viele Teile, desto effektiver wird alles. Um den Effekt nochmal deutlich anhand der Ladezeiten im Browser zu zeigen:

  • Die Variante ohne Cache lädt in 1.96 Sekunden
Ladezeiten ohne Cache
Ladezeit ohne Cache (1.96 Sekunden)
  • Die Variante mit Cache lädt in 1.05 Sekunden
Ladezeit mit Cache (1.05 Sekunden)
Ladezeit mit Cache (1.05 Sekunden)

Der Unterschied ist immens und für den Besucher der Site deutlich spürbar!

Links


tl;dr: LiteSpeed Cache sorgt für eine erhebliche Performance Steigerung deiner Website

Save


von

Schlagwörter:

Kommentare

6 Antworten zu „Joomla + LiteSpeed Cache = Speed“

  1. Avatar von Debbie Weber
    Debbie Weber

    Ich setze immer viel dran, die Ladezeit der Webseiten meiner Kunden zu optimieren. Sei es mit Anzahl Requests resp. kombinieren von Skripts oder mit Bildoptimierung. Das cachen von ganzen Seiten hatte mir bisher in dieser Form gefehlt.

    Also habe ich es grad ausprobiert – und war wirklich überrascht. Auf grossen Seiten mit komplexen Abfragen und vielen Modulen und reduziert sich die Ladezeit um über 50%! Es ist merklich spürbar, ob die Seite in 4.2 oder in 1.96 Sekunden lädt. Einfach nur WOW!

    Auch bei kleineren und weniger komplexen Seiten konnte ich eine schnellere Ladezeit von 30% feststellen, also eine Reduktion von 2.5s auf 1.4 Sekunden.

    Bei Testen war ich zuerst skeptisch, gibt es doch bei Joomla und Cache immer wieder mal Probleme. Aber auch Formulare funktionieren einwandfrei. Und durch die Einstellungen in der htaccess Datei kann ich die einzelnen Seiten und Komponenten gezielt steuern.

    Zusammengefasst: einfach einzurichten, flexibel, grosser Effekt für wenig Aufwand!

  2. Avatar von Oliver Kirstein

    Vielen Dank für die wirklich wertvolle Information!

  3. Avatar von David Jakob

    Habe es auch gerade ausprobiert und kann Debbie nur zustimmen : 40%-60% schneller.
    Das lohnt sich.
    Danke für den Tipp!

  4. Avatar von Markus
    Markus

    Funktioniert einwandfrei, vielen Dank für den wertvollen Tip!

  5. Avatar von Pascal
    Pascal

    Besten Dank für die Anleitung.

    Einziges Manko: User-Login funktioniert so nicht mehr, wegen folgender Anweisung: RewriteCond %{HTTP_COOKIE} !loginuser

    Grund: Das in der .htaccess Datei spezifizierte Cookie muss zuerst nach Joomla in die Datei [ROOT]/components/com_users/controller.php übernommen werden.

    Unter Joomla 3.7 zu setzen bei

    // Handle the default views.
    case ‚login‘:
    $model = $this->getModel($vName);
    setcookie(„loginuser“,“yes“);
    break;

    sowie bei

    default:
    $model = $this->getModel(‚Login‘);
    setcookie(„loginuser“,“yes“);
    break;

    Nachzulesen für ältere Joomla-Versionen auch unter: https://www.litespeedtech.com/support/forum/threads/solved-litespeed-cache-joomla.4679/

    1. Avatar von Hagen Graf

      Danke für den Hinweis

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert