Caching nutzt einen schnellen Puffer-Speicher, um (erneute) Zugriffe ohne aufwändige Neuberechnungen auszuliefern. Dadurch wird beim Laden einer bereits besuchten Seite der zuvor mit PHP-Scripts dynamisch erstellte Code nicht neu generiert, sondern wiederverwendet. Daraus resultieren vor allem kürzere Ladezeiten, aber auch weniger Serverlast.
Caching-Systeme für Web-Applikationen können dabei prinzipiell an zwei Stellen vorkommen:
- Innerhalb der Applikation selbst oder ausserhalb als „vorgeschalteter“ Dienst.
- Beim nginx-Caching erfolgt das Caching durch den vorgeschalteten nginx Webserver.
Als Beispiel dient ein Wordpress Blog, bei welchem auf der Startseite die neuesten 20 Beiträge angezeigt werden.
Beim ersten Aufruf des Blogs wird die Anfrage an den Webserver durchgereicht, welcher dann WordPress in Gang setzt. Dazu muss zunächst der PHP-Code von WordPress interpretiert und ausgeführt werden. Sprich WordPress muss verschiedene Anfragen (z.B. für die 20 Beiträge) an die Datenbank stellen. Als Ergebnis wird dann ein HTML-Dokument an den Webserver zurückgegeben, welcher dieses dann an den Browser des Besuchers ausliefert.
Dieser Prozess nimmt eine gewisse Zeit in Anspruch, fordert vom Server gewisse Ressourcen und muss für jede Anfrage wiederholt werden. Bei kleinen Webseiten stellt dies kein Problem dar, jedoch kann dieses Prozedere bei sehr aufwendigen oder stark frequentierten Webseiten zu erhöhter Last auf dem Server führen, was wiederum die Geschwindigkeit, mit welcher der Server die Seiten ausliefert, verringern kann.
Das nginx-Caching verkürzt diesen Prozess, indem es den ersten Aufruf durchreicht und, sobald das HTML-Dokument generiert wurde, dieses in einem Zwischenspeicher ablegt. Alle weiteren Zugriffe auf die gleiche Seite werden dann direkt aus diesem Zwischenspeicher bedient. Weder der Webserver noch PHP oder die Datenbank müssen für diese Zugriffe aktiv werden. Dies sorgt für eine Reduzierung der Server-Last und beschleunigt die Auslieferung der Seiten.
Informationen zu nginx-Caching
Das Aktivieren von nginx-Caching ist nur für Websites mit einem spezifischen Profil empfohlen (beispielsweise beliebte Blogs oder Nachrichten-Websites):
- Hohes Besucheraufkommen
- geringer Anteil an personalisierten Inhalten
- Erfahrener Webmaster verfügbar
Das Aktivieren von nginx-Caching kann für Websites mit folgendem Profil wirkungslos oder sogar schädlich sein:
- Tiefes Besucheraufkommen
- Personalisierte Inhalte (beispielsweise die geographische Lage des Besuchers oder der Inhalt des Warenkorbs).
- Cache auf Applikationsebene aktiv (z.Bsp. ein WordPress Cache Plugin).
Aktivieren von nginx-Caching
- Melde dich im Controlpanel Plesk an. Falls Sie das Plesk-Passwort nicht mehr besitzt, beachte bitte den Artikel Passwort vergessen.
- Wähle den Menupunkt „Domains & Websites“ aus.
- Klicke auf ‚Einstellungen für Apache & nginx‘.
- Wähle im Bereich ’nginx-Einstellungen‘ das Kontrollkästchen ’nginx-Caching aktivieren‘ aus.
- Optional können die Einstellungen für nginx-Caching personalisiert werden. Wir empfehlen jedoch für die initiale Aktivierung mit den vordefinierten Standardeinstellungen zu arbeiten. Falsches Konfigurieren dieser Einstellungen kann die Website- und Serverleistung beeinträchtigen.
- Bestätige die Einstellung mit „OK“.
Informationen zum Status
Sobald das Cacheing aktiviert ist, hängt der Webserver den Header X-Cache-Status an alle Antworten. Wird eine Seite/Ressource aus dem Cache ausgeliefert, hat der Header den Wert „HIT“. Wird die Anfrage nicht aus dem Cache heraus bedient, lautet der Wert „MISS“ oder „BYPASS“. Die Headers sind in den Entwicklertools des Browsers oder mit „HTTP Header“ Browser-Plugins sichtbar.
Seite wurde aus dem Cache ausgeliefert:
HTTP/1.1 200 OK
Server: nginx
Date: Tue, 17 Jul 2018 11:19:40 GMT
X-Cache-Status: HIT
HTTP/1.1 200 OK
Server: nginx
Date: Tue, 17 Jul 2018 11:19:38 GMT
X-Cache-Status: MISS / BYPASS
Bekannte Probleme
Mögliche Gründe, wenn eine Website mit dem Status „MISS“ oder „BYPASS“ ausgeliefert wird:
- Die Web-Applikation (und/oder der Browser) sendet mit, dass diese Ressource nicht gecached werden kann/darf
(z.Bsp. Cache-Control: no-cache). - Es werden nicht ausgeschlossene (siehe Bereich ‚Cache-Abfragen mit Cookies ‚ unten) Cookies mitgeschickt.
Standardmässig werden keine Seiten gecached, die Cookies nutzen.