To Cache or not to Cache – Vor- und Nachteile, Cache Plugins und mehr

To Cache or not to Cache - Vor- und Nachteile, Cache Plugins und mehrMit Hilfe eines Cache kann man sehr effektiv die Last eines Servers senken, wenn viele Besucher darauf zugreifen. Damit läuft eine Website viel stabiler und ist auch schneller.

Doch der Einsatz eines Cache hat auch Nachteile, deren man sich bewusst sein sollte.

Dieser Artikel beleuchtet die Vor- und Nachteile des Caching, stellt Plugins vor und ich schildere meine Erfahrungen.

Was ist ein Cache?

Die Seiten und Artikel von Blogs und Websites werden heutzutage nicht mehr “von Hand” einzeln erstellt, wie das früher der Fall war. Damals wurden Artikel bzw. Seiten fest im HTML-Editor erstellt und als HTML-Seite hochgeladen. Diese Seiten waren “fertig”, schnell, aber eben auch statisch.

Heute verwendet man Datenbanken und generiert dazu im Moment des Aufrufes einer Seite den Inhalt dieser Seite. Das ist unter dem Begriff Content Management System bekannt. Eine Vorlage wird also immer für jeden Seitenzugriff mit Inhalten gefüllt. Damit kann man dynamische und an verschiedene Aspekte angepasste Inhalte präsentieren. Auch Interaktion mit den Nutzern wird dadurch möglich.

Da der Server aber für jede dynamisch erzeugte Seite dutzende Male auf die Datenbank zugreifen muss und auch noch diverse PHP-Funktionen ausführt, ist diese “on the fly” Erstellung von Artikeln und Seiten zwar flexibler, aber eben auch langsamer. So ist z.B. WordPress nicht besonders in diesem Bereich optimiert, so dass die vielen Datenbankzugriffe den Seitenaufbau relativ stark verlangsamen. Das gilt insbesondere dann, wenn viele Plugins und ein funktionsreiches Theme zum Einsatz kommen.

Deshalb gibt es inzwischen viele Arten von Cache-Umsetzungen. Eine der gängigsten ist, dass man die HTML-Seite beim ersten Zugriff normal aus der Datenbank dynamisch erstellt und diese erzeugte Datei dann zwischenspeichert auf dem Server. Kommt dann ein weiterer Besucher und will die selbe HTML-Seite anschauen, generiert man diese nicht mehr neu, sondern zeigt diesem Besucher die zwischengespeicherte Seite an.

Welche Vorteile hat der Cache?

Das Caching von Internet-Seiten entlastet den Server und die Datenbank sehr stark. Es ist nun mal ein Unterschied, ob man innerhalb von einer Stunde 1.000 mal eine Seite aus der Datenbank heraus generiert oder ob man das nur einmal macht und dann die fertige Seite anzeigen lässt.

Wie verschiedene Benchmarks zeigen, verringert sich die Serverlast durch das Caching auf ein Minimum. Ist natürlich klar, da einfach nur eine fertige Datei ausgeliefert werden muss, statt dutzende Datenbankzugriffe und Funktionsaufrufe auszuführen. Das ist auch visuell gut zu erkennen. Es erscheint die komplette Seite und baut sich nicht nach und nach auf.

Ein weiterer Vorteil ist, dass JavaScript-Funktionen weiterhin ausgeführt werden, da diese ja normal im HTML drin stehen. Hier werden also z.B. Statistiken von Google Analytics normal weiter gesammelt.

Bestimmte Caching-Methoden nutzen zudem den Browser des Besuchers, damit dieser z.B. Bilder oder Scripte zwischenspeichert. Damit müssen diese Inhalte das nächste mal nicht vom Server geladen werden, sondern liegen schon im Browser-Cache bereit.

Welche Nachteile hat ein Cache?

Man kann einen Cache normalerweise zeitlich begrenzen. So habe ich hier im Blog z.B. eingestellt, dass die gecachten Artikel und Seiten regelmäßig neu generiert werden. Damit werden dann auch Änderungen seit der letzten Zwischenspeicherung übernommen. Bei Kommentaren oder Änderungen am Artikel wird der Cache sofort erneuert.

Problematisch ist ein Cache aber z.B. bei der Anzeige sich ständig ändernder Informationen. So kann man mit einem aktiven Cache z.B. nicht mehr die Zahl der derzeit aktiven Leser auf der eigenen Website anzeigen, da sich diese ja ständig ändert. Durch den Cache zeigt dann jeder Artikel und jede Seite andere Werte an. Es gibt zwar Cache-Plugins, die es erlauben einzelne Elemente einer Seite weiterhin dynamisch zu halten, aber optimal ist das nicht.

Auch solche Anzeigen wie “Die aktuellsten Beiträge” und “Die beliebtesten Beiträge” werden zwischengespeichert und nicht sekundengenau auf allen Seiten ausgegeben. Generell muss man sagen, dass PHP-Befehle bei gecachten Seiten nicht ausgeführt werden, sondern das Ergebnis gespeichert und angezeigt wird. Erst wenn eine Seite oder ein Artikel wirklich wieder neu generiert wird (der Cache der Seite also gelöscht wird), werden auch alle PHP-Funktionen und Datenbank-Zugriffe erneut ausgeführt.

Das sorgt z.B. für Probleme auf Affiliate Websites, wo Preise aus Online-Shops angezeigt werden. Man sollte natürlich keine veralteten Preise anzeigen und so habe ich dort meinen Cache auf 1 oder 2 Stunden ergestellt. Dann wird wieder eine dynamische Seite erstellt und z.B. mit dem Plugin AAWP der aktuelle Preis von Amazon gezogen.

Doch auch diese kurzen Cache-Zeiten entlasten den Server merklich und sind deshalb sinnvoll.

Cache-Plugins für WordPress

WordPress selber hat bereits ein Cache-System. Allerdings ein recht einfaches, welches nur wenig an der Ladezeit verbessert.

Deshalb sollte man mit einem Cache-Plugin nachhelfen, von denen es eine Vielzahl im offiziellen Plugin-Verzeichnis gibt.

Derzeit kommt hier im Blog das Plugin WP Fasted Cache zum Einsatz. Es bietet bereits in der kostenlosen Variante viele Einstellungsmöglichkeiten und erzeugt einen schnellen und zuverlässigen Cache.

Mein Blogs hat mit über 200.000 Besuchern im Monat ganz ordentlichen Traffic, aber es gibt keine Einbußen bei der Performance, dank des Cache.

Cache-Plugins für WordPress

Es gibt noch andere Cache-Plugins, wie z.B. WP Super Cache, welches ich hier früher verwendet habe und auf manchen Blogs bzw. Websites immer noch nutze. Auch das Plugin Cache Enabler ist recht beliebt, weil es sehr einfach gehalten ist, ohne komplizierte Einstellungsmöglichkeiten.

Am besten probiert ihr diese Plugins mal aus und testet, welches bei euch funktioniert und die besten Ergebnisse erzeugt. Im Google PageSpeed Insights Tool kann man die Performance messen und schauen, welches Plugin am meisten bringt.

Das Problem bei WordPress ist allerdings, dass es durch die vielen erhältlichen Plugins immer wieder vorkommen kann, dass das eine oder andere Plugin mit aktiviertem Cache nicht mehr richtig läuft. Hier gibt es zwar bei den Cache-Lösungen wiederum die Möglichkeit einzelne Teile des PHP-Codes dynamisch zu belassen, aber da muss jeder WordPress-Betreiber selber prüfen, ob es Probleme gibt und ggf. ein anderes Plugin nutzen.

Andere Möglichkeiten zur Ladezeitenoptimierung

Es gibt aber noch andere Möglichkeiten die Ladezeiten zu verbessern:

  • So kann man z.B. die Anzahl der Datenbank-Zugriffe verringern, indem man sehr Datenbank-intensive Plugins entfernt und dafür weniger leistungshungrige Plugins nutzt. Mit dem Plugin Query Monitor kann man sich unter anderem die Datenbankzugriffe anzeigen lassen und so die Plugins finden, die besonders viele Zugriffe verursachen.
  • Man kann natürlich auch generell den Inhalt einer Seite verringern. So würde es z.B. die Ladezeiten verbessern, wenn man die Anzahl der Posts auf der Blog-Startseite von 20 auf 10 verringert. Auch nicht wirklich benötigte Plugins sollte man deaktivieren.
  • Grafiken sollten ebenfalls optimiert werden und möglichst klein sein. Umso weniger Daten müssen von Server geladen werden. Das gilt auch für Scripte.
  • Ein leistungsfähigerer Server beschleunigt die Auslieferung von Seiten natürlich ebenfalls. Gerade in Stoßzeiten macht schneller Webspace, wie z.B. von All-Inkl, sehr viel aus.

Weitere Tipps für schnelle Websites:

Fazit

Das Cachen mit WordPress ist nicht ganz ohne Hürden, aber durch die mittlerweile sehr guten Plugins auch für Laien umsetzbar.

Ich verstehe allerdings immer noch nicht, warum WordPress nicht selbst ein verbessertes Cache-System mitbringt. Die Entwickler stecken so viel Energie in Features, die ich für nicht so wichtig halte, aber ein richtiges integriertes Caching-System gibt es leider bisher nicht.

Welches Cache-Plugin nutzt ihr für eure WordPress-Website?

Peer Wandiger

8 Gedanken zu „To Cache or not to Cache – Vor- und Nachteile, Cache Plugins und mehr“

  1. Hast / hattest du auch einmal Cachify im Einsatz?
    Sehr rudimentär, scheint den Job aber auch zu erfüllen. Wie ist deine Meinung?

    Antworten
    • Ja, auf der einen oder anderen Nischenwebsite habe ich Cachify im Einsatz. Das funktioniert dort sehr gut. Allerdings sind es mir zu wenige Einstellungsmöglichkeiten im Plugin.

      Antworten
    • Schau dir mal Cache Enabler an. Basiert auf Cachify, wird aber von KeyCDN entwickelt und ist schlichtweg besser.

      Die großen Cache Engines lohnen sich aus meiner Sicht fast nie. Nur wenn du wirklich viele Dynamiken und sechsstellige Besucherzahlen hast.

      Antworten
  2. Caching und SEO. Für beides möchte ich bei einem CMS nicht erst ein Plugin installieren müssen. Muss ich bei WordPress aber.

    Stimme mit deinem Fazit also überein. Keine Ahnung, warum solche Standards nicht längst Teil vom Core sind. Wobei… vermutlich einfach zu aufwendig, wenn es dafür doch eh Plugins gibt.

    Antworten
  3. hi peer,

    hmm. man könnte auch sein eigenes cache-systen direct in die htaccess packen. das hat den vorteil, dass man den cache an die bedürfnisse des webseitenbetreibers anpassen könnte. so könnte man nur spezielle seiten oder kategorien der webseite cachen. oder alle geschriebenen artikel zum beispiel für eine bestimmte zeit (1 std, 1 tag, 1 woche, monat, jahr …) cachen. darüber hinaus hat man mittels htaccess auch die möglichkeit, die gesamte webseite gunzip-zu-komprimieren. heisst, dass die webseite verpackt ausgegeben und auf dem client-system entpackt wieder ausgegeben wird. das funzt mit jedem cms. am besten natürlich ist es aber, wenn man seine webseite selbst programmiert. unter php7.3 kann man so neue standards auf datenbankzugriffe anwenden wie etwa pdo. da wp und andere cms aber auch alle in php programmiert sind, müsste man eigentlich auch diese systeme einfach auf php7.3 einstellen koennen. durch pdo zum beispiel werden die daten beim oeffnen der webseite aus der datenbank in ein array gepackt und ueber variablen gegebenenfalls ausgegeben und nicht immer eine neue datenbankverbindung aufgebaut. das ist ein performance boost. aber fuer den laien empfehle ich die htaccess methode. wenn man sich da ein bisschen einliest, bekommt man das recht schnell hin. das problem, das ich bei plugins fuer cms sehe ist, dass ja wieder ein plugin am ende verwendet wird, das ressourcen benoetigt, die man sich ueber die htaccess sparen koennte 🙂

    schoene gruesse
    mike

    Antworten
    • Es ist eigentlich immer besser, direkt in der htaccess oder auf dem Server Einstellungen vorzunehmen, anstatt Plugins zu nutzen. Das Problem ist dabei aber, dass das die wenigsten können. Deshalb gibt es Plugins.

      Antworten

Schreibe einen Kommentar