Knowledgebase:Caching

From Cloudrexx Development Wiki
Jump to: navigation, search

Über caching

Was ist Caching und warum ist es nützlich?

In der IT Welt wird der Mechanismus Caching für Daten benutzt auf die oft zugegriffen wird. Die Daten werden in einen temporären schnellen Speicher geschrieben und dort nach bestimmten Regeln vorgehalten. Wenn das Caching richtig konfiguriert wird, führt es dazu, das beispielsweise ihre Website sehr viel schneller angezeigt wird.

Benötige ich Caching?

Kurz gesagt: Ja. Selbst wenn ihre Website nicht sehr viele Benutzer hat oder ihre Website nicht so oft besucht wird, hilft caching die Antwortzeiten zu reduzieren und Systemresourcen und Zeit zu sparen.

Muss ich den Cache Inhalt regelmässig erneuern?

Nein, das müssen Sie nie manuell tun. Cloudrexx übernimmt dies automatisch.

Wie muss das Caching konfiguriert werden?

Die Konfiguration des Cachings kann im Backend unter "Administration" - "Grundeinstellungen" - "Caching" durchgeführt werden. Untenstehende Grafik zeigt ein empfohlenes Setup für Seiten mit kleinerem und mittlerem Besucheraufkommen:

100%

Es ist möglich 5 verschiedene Typen von Cache unabhängig voneinander zu konfigurieren. Welche Sie konfigurieren können, hängt auch von den Einstellungen und Möglichkeiten ihres verwendeten Hostings ab.

  • Caching von Datenbankabfragen und Zugriffen
  • Caching von Program Code (opcode cache)
  • Caching von Inhaltsseiten (Cloudrexx-Caching)
  • Caching von HTTP-Anfragen (/ Reverse-Proxy) mit Varnish oder NGINX
  • Caching SSI/ESI Seiten im Cloudrexx über mit Varnish oder NGINX

Caching von Datenbank Abfragen

Warum soll ich den Datenbank Cache verwenden?

Datenbank Caching beschleunigt die Anzeige einer Website erheblich.

Wann kann Datenbank Cache benutzt werden?

Der Datenbank Cache kann benutzt werden, wenn die erforderliche Bibliothek auf dem Hosting Server installiert und konfiguriert ist.

Wie wird es konfiguriert?

Cloudrexx benutzt Doctrine 2.0. Doctrine besitzt einen Datenbank Cache, den Cloudrexx automatisch benutzen kann. Doctrine kann mit verschiedenen Datenbank-Cache-Systemen umgehen: mit APC, Memcache(d) und XCache:

100%

In der Abbildung ist sichtbar, dass Cloudrexx abfragt ob und welche(s) Datenbank-Cache-System installiert, konfiguriert und benutzbar ist. Für Memcache(d) kann ein Hostname und Port angegeben werden.

Für Entwickler

Es gibt 3 Caching Typen in Doctrine:

  • Der Metadaten Cache ist für das Caching von Objekt Mapping Informationen.
  • Der Abfrage Cache (Query Cache) ist verantwortlich für das Caching von ursprünglichen SQL Abfragen, die aus den übersetzten Abfragen von Doctrine's DQL (doctrine query language) stammen.
  • Der ResultCache speichert Resultate von Abfragen zwischen.

Zudem speichert Cloudrexx selbst einige Daten mit dem ausgewählten Datenbank-Cache-System zwischen.

Sie können relativ einfach Ihren eigenen Cache Anbieter implementieren.

Weitere Informationen unter: Doctrine official documentation

Caching von Programm Code (opcode cache)

Cloudrexx kann mit einigen bekannten OpCode caches zusammenarbeiten. Beispiele: APC, APCu and Zend OPCache.

Warum sollte ich den opCode Cache verwenden?

Es wird die Anzeige der Website viel schneller machen, da vorkompilierter Code bereits im Cache liegt. Dieser muss dann nicht mehr kompiliert werden, was enorm Zeit erspart.

Was sind die Voraussetzungen um diesen Cache nutzen zu können?

Dieser OpCode Cache kann auf allen Hostings verwendet werden auf denen die Bibliotheken zur Verfügung stehen.

Von Cloudrexx unterstützte Bibliotheken:

  • APC
  • APCu
  • Zend OPCache
  • xCache

Um herauszufinden welche Bibliothek(en) installiert sind, können Sie im Backend unter Global Configuration > Caching nachsehen oder ihren Administrator fragen.

Wie wird das konfiguriert?

Der Abschnitt "Programmcode Cache Systeme" zeigt welche Systeme unterstützt, installiert, aktiv, konfiguriert und ausgewählt sind.

100%

In der Abbildung ist sichtbar, dass Cloudrexx abfragt ob und welche(s) OpCode-Cache-System installiert, konfiguriert und benutzbar ist.

Beschreibung der Konfigurationsmöglichkeiten

In der Tabelle sehen Sie 4 Spalten und eine Anzahl Reihen für die unterstützten Cache Bibliotheken.

In der ersten Spalte finden sie den Namen der Bibliothek.

In der zweiten Spalte können Sie sehen, ob die entsprechende Bibliothek auf Ihrem Server installiert ist. Grün bedeutet installiert, rot bedeutet nicht installiert oder nicht gefunden.

Die dritte Spalte zeigt den Status der Bibliothek an. Aktiv oder nicht aktiv, je nach den Einstellungen des Servers.

Die vierte Spalte zeigt Ihnen ob die Bibliothek alle erforderlichen Einstellungen hat und ob sie aktiviert wurde.

Wenn alle 3 Spalten "grün" anzeigen können Sie diese Bibliothek verwenden und in der ersten Spalte einschalten. Speichern nicht vergessen.

Probleme

Wenn Sie auf Probleme stossen sollten Sie sich an Ihren System Administrator wenden. Die Informationen die sich hinter dem kleinen i (weisser Buchstabe auf blauem Hintergrund) verbergen, können für Ihrem System Administrator hilfreich sein, um den OpCode Cache richtig zu konfigurieren.

Den OPCode Cache leeren

Sie können den OPCode Cache im Reiter "Statistiken" leeren. Die Caches sind unabhängig voneinander löschbar.

100%

Für Entwickler

Wir empfehlen den Einsatz des Zend OPCache. Mit APC kommt es insbesondere während der Entwicklung teilweise zu Problemen, weil der Cache bei Änderungen an den PHP-Dateien zum Teil nicht rechtzeitig erneuert wird.

Caching von Inhaltsseiten

Warum sollte es benutzt werden?

Diese bereits eingebaute Cache Methode kann die Antwortzeiten der statischen Inhaltsseiten erheblich beschleunigen und dazu beitragen, das Besucher der Website die Inhalte schneller angezeigt bekommen.

Wann kann das Caching benutzt werden?

Die Funktion ist bereits eingebaut und läuft ohne zusätzlichen externen Code.

Bei der Aktivierung kann zusätzlich die Anzahl Sekunden angegeben werden, nach welcher der Cache zwingend erneuert wird.

100%

Wenn der Seiten Cache eingeschaltet wurde, werden die Inhaltsseiten im Ordner /tmp/cache/page abgelegt (Die abgelegten Dateien sind komplett aufgebaute Inhaltsseiten und werden beim nächsten Aufruf direkt aus diesem Ordner gelesen). Zudem werden auch die HTTP-Header der jeweiligen Seiten abgelegt.

Löschen des Caches für die statischen Inhaltsseiten

Wenn Sie den Inhaltsseiten Cache Löschen wollen gehen Sie wie folgt vor:

  • Benutzen Sie die Funktion zum Löschen des Caches im Reiter "Statistiken".
  • Klicken Sie im Bereich "Cloudrexx-Caching" auf die Schaltfläche "Cache leeren":

100%

Für Entwickler

Die Cloudrexx Cache Funktion wird mithilfe der folgenden Datei: /core_modules/cache/index.class.php initialisiert und gesteuert.

Wie funktioniert das?

Wenn die Cache Funktion eingeschaltet ist, wird bevor der Inhalt ausgegeben wird eine Zwischenspeicherung (Buffering) gemacht (@107 – startCloudrexxCaching function). Wenn Cloudrexx fertig ist und ein paar zusätzliche Überprüfungen gemacht hat, wird der Inhalt des Zwischenspeichers (Buffer) in eine Datei geschrieben (Cache file) (@133 – endCloudrexxCaching function).

Wenn Sie die Cache Dateien löschen möchten:

Löschen Sie einfach die Dateien im Verzeichnis /tmp/cache. Seien Sie vorsichtig und löschen oder verändern Sie keine anderen Unterverzeichnisse innerhalb von /tmp.

Benutzung von Reverse Proxy Caching für HTTP Anforderungen

Warum soll ich einen Reverse Proxy benutzen?

Ein Reverse Proxy kann ihren Webserver entlasten. Es "sitzt" zwischen Ihrem Webserver und den Website-Benutzern. Wenn sich eine HTTP Anforderung bereits in dessen Cache befindet, wird sie von dort ausgeliefert und braucht daher keine Ressourcen von Ihrem Webserver. Erfahrungsgemäss ist ein solcher Cache insbesondere für Seiten mit einem sehr hohen Besucheraufkommen sinnvoll.

Wann kann ich einen Reverse Proxy benutzen?

Wenn Ihr Hosting einen von Cloudrexx unterstützen Reverse Proxy zur Verfügung stellt können Sie die Funktion nutzen.

Wie wird der Reverse Proxy konfiguriert?

Seitens Cloudrexx müssen der Hostname und der Port des Reverse Proxys hinterlegt werden, damit Cloudrexx den Reverse Proxy über geänderte Inhalte informieren kann.

  • Wählen Sie im Abschnitt "Reverse Proxy Cache" Varnish oder NGINX aus und tragen Sie die IP Adresse und den Port des Reverse Proxys ein:

100%

SSI/ESI-Caching

Was ist SSI/ESI-Caching?

Da einzelne Teile der Seite häufiger ändern als andere werden häufig ändernde Teile (z.B. die neuesten Kalender-Event auf der Startseite) nicht im Cloudrexx-Cache abgelegt. So kann kann beispielsweise der Cloudrexx-Cache der Startseite beibehalten werden, auch wenn ein neuer Kalender-Event veröffentlicht wird der auf der Startseite dargestellt werden soll. Lediglich die in die Startseite eingebetteten SSI- oder ESI-Seite ändert.

Welche Konfigurationsmöglichkeiten gibt es?

Es gibt drei Varianten wie das SSI/ESI-Caching konfiguriert werden kann:

  • Ausgabe der SSI/ESI-Einbettungen als SSI-Tags (Ausgabe: "SSI Kompatibel")
  • Ausgabe der SSI/ESI-Einbettungen als ESI-Tags (Ausgabe: "ESI Kompatibel")
  • Keine Ausgabe der SSI/ESI-Einbettungen. Diese werden von Cloudrexx selbst aufgelöst (Ausgabe: "Keine")

Bei ersteren beiden Möglichkeiten muss ein SSI- resp. ESI-fähiger Reverse Proxy angegeben werden. Dieser wird genau gleich konfiguriert wie im Abschnitt Wie wird der Reverse Proxy konfiguriert beschrieben.

Die interne Verarbeitung der SSI/ESI-Einbettungen ermöglicht den Betrieb ohne einen Reverse Proxy. In diesem Fall kann angegeben werden, ob Cloudrexx die SSI/ESI-Seiten zwischenspeichern soll.

Welche Konfiguration empfiehlt sich?

Wenn ein Reverse Proxy verwendet wird und dieser SSI- oder ESI-fähig ist, sollte er auch zur SSI/ESI-Verarbeitung verwendet werden.

Wenn die interne Verarbeitung gewählt wird, ist die Aktivierung des internen Caches empfohlen.