
In diesem Tutorial erkläre ich, wie man FastCGI-Caching mit WordPress konfiguriert, um mit PHP generierte Seiten zwischenzuspeichern, um die Geschwindigkeit einer WordPress-Site zu erhöhen und die Serverlast zu reduzieren.
Durch die Aktivierung des FastCGI-Cache werden die in PHP generierten Seiten auf Nginx-Ebene zwischengespeichert. Mit diesem Caching wird die Seite, wenn sie aufgerufen wird und sich im Cache befindet, direkt bereitgestellt, ohne dass PHP-Code und damit SQL-Abfragen generiert werden.
Pour exploiter pleinement cette solution, il faut que le site soit principalement accessible en mode „invité“ sans authentification.
Los geht’s, hier sind die hinzuzufügenden Konfigurationszeilen:
Fügen Sie im Teil http{ … } der Datei nginx.conf oder in der virtuellen Hostdatei der Site mit dem Block server { … } die folgenden Zeilen hinzu, mit denen Sie den Cache auf Nginx-Ebene deklarieren können.
# fastcgi cache
fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=wpcache:200m max_size=10g inactive=2h use_temp_path=off;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
- fastcgi_cache_path : Gibt den Cache-Speicherort und die Cache-Parameter an
- keys_zone : Das Attribut definiert den Cache-Namen und die Größe des gemeinsam genutzten Speicherbereichs. 200 m reichen aus, um mehr als eine Million Schlüssel zu speichern.
- max_size : maximale Cachegröße auf der Festplatte
- inactive : Cache-Lebensdauer bei Nichtgebrauch, hier 2 Stunden
- fastcgi_cache_key : ermöglicht Ihnen die Generierung der Cache-Kennung (Schlüssel)
- fastcgi_ignore_header : ermöglicht Ihnen, den Cache basierend auf bestimmten HTTP-Headern zu deaktivieren.
Folgendes sollte im Serverteil { … } des virtuellen Hosts hinzugefügt werden.
Es können Ausnahmen angegeben werden, wenn der Cache nicht verwendet werden soll:
set $skip_cache 0;
if ($request_method = POST) {
set $skip_cache 1;
}
if ($query_string != "") {
set $skip_cache 1;
}
if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|^/feed/*|/tag/.*/feed/*|index.php|/.*sitemap.*\.(xml|xsl)") {
set $skip_cache 1;
}
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
set $skip_cache 1;
}
Fügen Sie im Abschnitt, der sich mit der Ausführung von PHP-Code befasst, die folgenden Zeilen hinzu:
location ~ \.php$ {
...
fastcgi_cache wpcache;
fastcgi_cache_valid 200 301 302 2h;
fastcgi_cache_use_stale error timeout updating invalid_header http_500 http_503;
fastcgi_cache_min_uses 1;
fastcgi_cache_lock on;
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
add_header X-FastCGI-Cache $upstream_cache_status;
}
- fastcgi_cache : Aktivieren Sie den Cache und geben Sie den Namen des zu verwendenden Caches an
- fastcgi_cache_valid : bestimmt die Cache-Lebensdauer basierend auf dem HTTP-Code
- fastcgi_cache_use_stale error : bestimmt die Bedingungen, unter denen Nginx veraltete Inhalte bereitstellen soll.
- fastcgi_cache_min_uses : bestimmt anhand der Anzahl der Anfragen, wann der Cache verwendet werden soll.
- fastcgi_cache_lock : Verhalten bei gleichzeitigen Anfragen.
- fastcgi_cache_bypass : Cache-Bypass mit der Variable $skip_cache
- fastcgi_no_cache : Cache-Bypass mit der Variable $skip_cache
Testen Sie die Nginx-Konfiguration:
sudo nginx -tWenn kein Fehler vorliegt, laden Sie die Konfiguration neu:
sudo systemctl reload nginxUm die Cache-Funktion zu testen, gehen Sie als angemeldeter Besucher auf die WordPress-Site und öffnen Sie die Entwicklertools des Browsers (F12).
Gehen Sie zu einer Seite der Site und sehen Sie sich die Antwortheader an.

Da es sich um den ersten Seitenaufruf handelt, ist der Cache laut X-Fastcgi-Cache-Header nicht verfügbar (MISS).
Seite neu laden:

Dieses Mal wurde der Cache verwendet und wir können dies am X-Fastcgi-Cache-Header erkennen, der auf HIT eingestellt ist.
Zum Abschluss dieses Tutorials erkläre ich, wie man den Cache leert. In WordPress gibt es ein Plugin namens Nginx Helper, mit dem man den Fastcgi-Cache von Nginx verwalten kann. Dafür benötigt man das Modul libnginx-mod-http-cache-purge. Diese Lösung funktioniert bei einer Standardinstallation.
Unabhängig davon, ob Sie sich in einem Container befinden oder nicht, besteht die einfachste Möglichkeit zum Leeren des Cache darin, den Cache-Ordner zu leeren und die Nginx-Konfiguration neu zu laden:
rm -rf /etc/nginx/cache/
/etc/init.d/nginx reload
Jetzt wissen Sie, wie Sie den Fastcgi-Cache auf Nginx für WordPress einrichten.
