WordPress Cache-Purging auf VPS
Sofortige, automatische Cache-Invalidierung für WordPress auf jedem RHEL-basierten VPS oder dedizierten Server.
-
Automatische Invalidierung
Der Cache wird automatisch gelöscht, wenn Sie Beiträge, Seiten oder Kommentare bearbeiten.
-
Chirurgische Präzision
Nur die geänderte Seite wird gelöscht—Ihre gesamte Website bleibt im Cache und schnell.
-
5-Minuten-Setup
Einfache Konfiguration mit unseren vorgefertigten NGINX-Modulen.
-
Festplattencaching
Der Cache überlebt NGINX-Neustarts—kein kalter Cache nach Updates.
Voraussetzungen
- Ein VPS oder dedizierter Server, der RHEL 7/8/9, Rocky Linux, AlmaLinux oder Amazon Linux ausführt.
- NGINX installiert (aus dem GetPageSpeed-Repository empfohlen).
- WordPress-Website mit konfiguriertem Full-Page-Caching.
Schnelles Setup
Schritt 1: Installieren Sie das Cache-Purge-Modul
# Installieren Sie das GetPageSpeed-Repository
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
# Installieren Sie das Cache-Purge-Modul
dnf -y install nginx-module-cache-purge
Aktivieren Sie das Modul in /etc/nginx/nginx.conf:
load_module modules/ngx_http_cache_purge_module.so;
Schritt 2: Konfigurieren Sie den NGINX-Proxy-Cache
Wenn Sie noch kein Proxy-Caching konfiguriert haben, hier ist eine vollständige Einrichtung:
Bearbeiten Sie /etc/nginx/nginx.conf oder erstellen Sie /etc/nginx/conf.d/proxy-cache.conf:
# Definieren Sie den Cache-Bereich (im http-Block)
proxy_cache_path /var/cache/nginx/wordpress
levels=1:2
keys_zone=wordpress:100m
max_size=10g
inactive=60m
use_temp_path=off;
In Ihrem Serverblock:
server {
listen 80;
server_name example.com;
# Caching aktivieren
proxy_cache wordpress;
proxy_cache_valid 200 60m;
proxy_cache_valid 404 1m;
proxy_cache_key "$scheme$request_method$host$request_uri";
# Cache-Status-Header hinzufügen
add_header X-Cache-Status $upstream_cache_status;
# PURGE-Methode aktivieren (nur localhost)
proxy_cache_purge PURGE from 127.0.0.1;
location / {
proxy_pass http://127.0.0.1:8080; # Ihr Backend
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Erstellen Sie das Cache-Verzeichnis:
mkdir -p /var/cache/nginx/wordpress
chown nginx:nginx /var/cache/nginx/wordpress
nginx -t && systemctl reload nginx
Schritt 3: Installieren Sie das Proxy-Cache-Purge-Plugin
- Gehen Sie zu Plugins → Neu hinzufügen
- Suchen Sie nach "Proxy Cache Purge" (Slug:
varnish-http-purge) - Klicken Sie auf Jetzt installieren, dann auf Aktivieren
wp plugin install varnish-http-purge --activate
Schritt 4: Konfigurieren Sie Proxy-Cache-Purge
Im WordPress-Admin:
- Gehen Sie zu Einstellungen → Proxy Cache Purge
- Setzen Sie "Set Custom IP" auf:
127.0.0.1 - Klicken Sie auf Einstellungen speichern
Kritische Einstellung
Das Plugin muss PURGE-Anfragen an 127.0.0.1 (localhost) senden, nicht an Ihre öffentliche IP.
Schritt 5: Konfigurieren Sie den NGINX-Cache-Backend
Ab Proxy Cache Purge 5.9.0 unterstützt das Plugin nativ das Wildcard-Purge-Format von NGINX. Konfigurieren Sie es, um das NGINX-Backend zu verwenden:
- Gehen Sie zu Proxy Cache Purge → Einstellungen
- Wählen Sie unter Cache-Backend NGINX
- Klicken Sie auf Einstellungen speichern
Fügen Sie zu Ihrer wp-config.php hinzu:
define( 'VHP_PURGE_BACKEND', 'nginx' );
Legacy: Plugin-Version < 5.9.0
Wenn Sie Proxy Cache Purge in einer Version älter als 5.9.0 ausführen, erstellen Sie
wp-content/mu-plugins/nginx-cache-purge-fix.php:
<?php
/**
* Plugin Name: NGINX Cache Purge Fix
* Description: Fügt Wildcard zu Purge-URLs für Vary-Header-Kompatibilität hinzu
*/
add_filter("vhp_purgeme_path", function($purgeme, $schema, $host, $path, $pregex, $p) {
if (empty($pregex)) {
$purgeme .= "*";
}
return $purgeme;
}, 10, 6);
Testen Sie das Setup
# 1. Cachen Sie eine Seite
curl -sI http://127.0.0.1/sample-page/ -H 'Host: example.com' | grep X-Cache
# X-Cache-Status: MISS (erste Anfrage)
curl -sI http://127.0.0.1/sample-page/ -H 'Host: example.com' | grep X-Cache
# X-Cache-Status: HIT (im Cache!)
# 2. Löschen Sie die Seite
curl -sX PURGE 'http://127.0.0.1/sample-page/*' -H 'Host: example.com'
# <h1>Erfolgreiches Löschen</h1>
# 3. Überprüfen Sie, ob der Cache geleert wurde
curl -sI http://127.0.0.1/sample-page/ -H 'Host: example.com' | grep X-Cache
# X-Cache-Status: MISS (geleert!)
So funktioniert es
flowchart LR
subgraph WP["WordPress"]
A["📝 Beitrag aktualisiert"] --> B["🔌 Plugin"]
end
B -->|"PURGE /post/*"| C
subgraph NG["NGINX"]
C["🗑️ cache_purge"] --> D["✅ Seite entfernt"]
end
E["👤 Besucher"] -->|"GET /post/"| NG
D --> F["Frischer Inhalt bereitgestellt"]
style WP fill:#4a90d9,stroke:#2d5986,color:#fff
style NG fill:#009639,stroke:#006325,color:#fff
Leistungstipps
-
Verwenden Sie RAM-Disk für heißen Cache
Montieren Sie
/var/cache/nginxals tmpfs für die schnellsten möglichen Cache-Lesevorgänge.mount -t tmpfs -o size=2G tmpfs /var/cache/nginx -
Normalisieren Sie die Komprimierungsheader
Reduzieren Sie Cache-Varianten mit dem compression-normalize Modul.
-
Cache für angemeldete Benutzer umgehen
proxy_cache_bypass $cookie_wordpress_logged_in;
Sicherheitsüberlegungen
Die Einschränkung from 127.0.0.1 ist kritisch:
proxy_cache_purge PURGE from 127.0.0.1;
Ohne diese könnte jeder Ihren Cache löschen, indem er PURGE-Anfragen sendet.
Für zusätzliche Sicherheit können Sie auch:
# Nur PURGE von bestimmten IPs zulassen
proxy_cache_purge PURGE from 127.0.0.1 10.0.0.0/8;
# Oder Authentifizierung verlangen
# (nicht in diesem Leitfaden behandelt)
Fehlersuche
X-Cache-Status zeigt immer MISS
- Überprüfen Sie, ob die proxy_cache-Direktive aktiviert ist.
- Stellen Sie sicher, dass das Cache-Verzeichnis existiert und von nginx beschreibbar ist.
- Überprüfen Sie, ob die Regeln für
proxy_cache_bypassnicht immer ausgelöst werden.
PURGE gibt 404 zurück
- Stellen Sie sicher, dass die
proxy_cache_purge-Direktive im richtigen Standortblock ist. - Überprüfen Sie, ob das Modul geladen ist:
nginx -V 2>&1 | grep cache_purge
Cache-Verzeichnis füllt sich
- Passen Sie
max_sizeinproxy_cache_pathan. - Reduzieren Sie die
inactive-Timeout. - Führen Sie
nginx -s reloadaus, um die Cache-Manager-Bereinigung auszulösen.
Verwandt
-
cache-purge Modul
Vollständige Direktive-Referenz
-
compression-normalize Modul
Reduzieren Sie Cache-Varianten
-
FastCGI Cache-Leitfaden
Alternative Caching-Methode für PHP-FPM