In diesem Video erklärt Jan Thiel, welche Caching-Philosophie bei WLWP zur Anwendung kommt, damit unseren Kunden der schnellstmögliche Zugriff auf ihre WordPress-Seiten ermöglicht wird.

 

Transkript des Videos

Gleich vorweg: es gibt nicht DAS beste Caching. Es gibt diverse Stellen, an denen man cachen kann, sowie diverse Möglichkeiten, mit denen man cachen kann. „Varnish“ ist zum Beispiel dafür gedacht, vor einen Webserver geschaltet zu sein und dort Web-Inhalte zu cachen, also Webseiten oder auch nur Teile von Webseiten.

Memcache oder Redis zum Beispiel sind nichts anderes als Mini-Datenbanken, die nur im schnellen RAM des Computers laufen, im Arbeitsspeicher. Dort kann man dann Sachen auslagern, die man sonst zum Beispiel in der MySQL-Datenbank hätte. Die MySQL-Datenbank ist zwar auch nicht langsam, aber ein Redis oder Memcache im Arbeitsseicher ist um ein Hundertfaches schneller.

Daten, die also dort in diesem Memcache oder Redis liegen, ersparen uns einen Datenbankzugriff und machen die ganze Seite schneller. Zugriffe, die im „Varnish“ landen, ersparen uns, dass überhaupt der Webserver oder WordPress angesprochen werden. Der Kunde merkt nichts davon, für den Kunden gibt es keinen Unterschied, der Aufruf bei WordPress wird jedoch nie dort ankommen.

Für den Kunden heißt das lediglich, dass die Seite nach dem Aufruf blitzschnell geladen wird. Nun gibt es weitere Caching-Mechanismen, wie Database-Caching oder Object-Caching, je nachdem, welchen Bereich dieser langen Kette (Kunde, Browser, Webserver, PHP, WordPress, MySQL-Datenbank) man cachen will.
Auch hierbei gibt es nicht die «Beste Lösung», sondern viele verschiedene.

Man kann sagen, dass der meiste Gewinn an Geschwindigkeit durch das Caching beim Kunden – nämlich ganz vorne – erreicht werden. Das kennt man, dass dort im Browser-Cache – so nennt sich das – CSS und JavaScript-Dateien liegen. Und zum Teil auch Webseiten. Das ist unglaublich schnell, weil der Browser vom Kunden sofort weiß: «Ich muss jetzt nicht diese lange Kette durchgehen, um von hier hinten wieder meine Daten zu bekommen, sondern ich habe die bereits und die haben sich nicht geändert.»

Daten, die ich beim Kunden nicht cachen kann, können vielleicht vorne im Varnish-Cache gelagert werden, da muss der Kunde nur mit dem Varnish kommunizieren und bekommt seine Webseite oder die Dateien zurück. Hinten bleibt die Kette PHP, WordPress, MySQL dabei unangetastet. Das Spiel lässt sich jetzt so fortführen. Gehe ich die Kette durch, komme ich beim Webserver an und bei PHP. Jetzt kann ich im PHP wiederum ein Opcode-Caching aktivieren. Das ist auf ganz tiefer Ebene ein Mechanismus, der Programmcode cached, sprich, der muss nicht immer wieder erzeugt, wieder durchlaufen werden, sondern der wird einfach ausgeführt.

Das heißt in dem Fall: PHP muss nicht das ganze WordPress neu durchlaufen, sondern ruft die gewünschten Daten einfach aus dem Cache ab und spart dadurch viel Zeit. Ich glaube, diese Kette ist relativ verständlich. Dort, wo ich cachen kann, sollte ich es tun und im Endeffekt erspart mir das imer einen weiteren Zugriff nach hinten durch. Disclaimer am Rande: Man kann nicht alles cachen. Es gibt durchaus Szenarien, in denen man nicht cachen will. Der Administrator zum Beispiel will nicht auf einer sich im Cache befindlichen Seite arbeiten, denn er muss ja das sehen, was wirklich da ist. Daher stellen sich die Fragen: «Wieviel kann ich cachen?» Und: «Womit kann ich cachen?»

Eine BuddyPress-Installation – große Community – kann man nicht mit einem Varnish-Cache zwischenspeichern, weil de facto jede Seite sehr dynamisch ist und ständig neu erzeugt werden muss. Man kann sehr wohl aber mit einem Opcode-Caching im PHP arbeiten oder Datenbankzugriffe cachen. Daher: es gibt nicht die beste Lösung, es gibt nicht das eine Produkt. Man sollte cachen, wo man kann. Man muss aber auch wissen, wo es sich besonders anbietet und wo nicht. Wenn man nämlich zu viel cached, kann das Ganze auch nach hinten losgehen. Dementsprechend: Caching ja, aber mit Bedacht.

0 Kommentare

Dein Kommentar

An Diskussion beteiligen?
Hinterlasse uns Deinen Kommentar!

Schreibe einen Kommentar

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