Was ist Caching?
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.
Resultat: kürzere Ladezeiten
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.
Wie funktioniert dies nun genau?
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.
Aktivieren von 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)
So aktivieren Sie nginx-Caching:
- Loggen Sie sich ins Plesk Administrationstool ein. (Passwort vergessen?)
- Stellen Sie sicher, dass Sie sich auf der Registerkarte Websites & Domains befinden.
Klicken Sie anschliessend auf 'Einstellungen für Apache & nginx'
- Wählen Sie im Bereich 'nginx-Einstellungen' das Kontrollkästchen 'nginx-Caching aktivieren' aus.
- (Optional) Sie können die Einstellungen für nginx-Caching personalisieren. 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.
- Klicken Sie auf OK.
Sobald der Cache 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 z. Bsp. in den Entwicklertools des Browsers oder mit "HTTP Header" Browser-Plugins sichtbar.
Beispiele (gekürzte Ausgabe):
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
Seite wurde nicht aus dem Cache ausgeliefert:
HTTP/1.1 200 OK Server: nginx Date: Tue, 17 Jul 2018 11:19:38 GMT X-Cache-Status: MISS oder X-Cache-Status: BYPASS
Mögliche Gründe:
-
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.
Details zu einzelnen Caching-Einstellungen
Einstellung 'Cache-Grösse'
Der Standart-Wert von 128 MB deckt die meisten Szenarien ab. Der Maximalwert beträgt 512 MB.
Einstellung 'Cache-Zeitlimit'
Der Wert definiert den Zeitraum, in welchem Daten im Cache als gültig erachtet werden. Standardmässig sind dies 5 Minuten (300 Sekunden) . Der Maximalwert beträgt 10 Minuten (600 Sekunden).
Einstellung 'Cache-Schlüssel'
Der Cache-Schlüssel wird zur Identifikation genutzt und wird anhand der Zeichenfolge der Abfrage generiert. Der Standart-Wert $scheme$request_method$host$request_uri
sollte grundsätzlich nicht geändert werden. Änderungen sollten ausschliesslich von erfahrenen Web-Entwicklern aufgrund bestimmter Vorgaben erfolgen.
Einstellung 'Cache-Abfragen mit Cookies'
Standardmässig speichert nginx keine HTTP-Abfragen, die den Cookie-HTTP-Header enthalten. Sie können dieses Verhalten ändern und veranlassen, dass nginx HTTP-Abfragen mit bestimmten Cookies zwischenspeichert, wenn Sie die Namen der Cookies im Feld 'Abfragen mit Cookies zwischenspeichern' festlegen. Wenn Sie beispielsweise die Cookie-Namen _ga / _gat / _gid
festlegen, kopiert nginx nur HTTP-Abfragen mit Cookie-Headers, die _ga / _gat / _gid
enthalten, in den Zwischenspeicher. Nginx kopiert keine HTTP-Abfragen in den Zwischenspeicher, deren Cookie-Header wenigstens einen Cookie-Namen enthalten, der nicht in dem Feld festgelegt ist.
Die genannten Cookie-Namen _ga, _gat und _gid
gehören zu Google Analytics, Details hierzu finden Sie direkt bei Google.
Einstellung 'Caching deaktivieren für Standorte'
Sie können die Serverauslastung reduzieren, indem Sie nginx so konfigurieren, dass bestimmter Web-Inhalt (beispielsweise dynamischer Inhalt, der nicht oft aufgerufen wird) nicht in den Zwischenspeicher kopiert wird. Legen Sie dazu den gewünschten URI $request_uri
im Feld 'Caching deaktivieren für Standorte' fest. Wenn Sie beispielsweise /backend/
festlegen, wird nginx Inhalt, der sich auf https://ihredomain/backend/ bezieht, nicht zwischenspeichern. Die meisten populären CMS senden jedoch per se schon entsprechende HTTP Header mit, welche das Caching unterbinden.
Artikel aktualisiert am 07.11.2019