open-how2 – Entdecke. Verstehe. Nutze.
Veröffentlicht am
How2-Tipps

Caching mit NGINX – Seiten, Dateien und API-Antworten schneller ausliefern

Autor
Caching mit NGINX – Seiten, Dateien und API-Antworten schneller ausliefern

Wenn es um Performance und Ladegeschwindigkeit geht, gehört NGINX zu den absoluten Spitzenreitern. Doch das volle Potenzial entfaltet der Webserver erst, wenn man sein Caching richtig nutzt.

Ob statische Dateien, dynamische Webseiten oder API-Antworten – mit gezieltem Caching kann NGINX die Antwortzeiten drastisch reduzieren und gleichzeitig Serverlast und Bandbreite sparen.

In diesem Artikel erfährst du, wie das NGINX-Caching funktioniert, welche Arten es gibt und wie du mit wenigen Zeilen Konfiguration deine Website beschleunigst.

1. Was ist Caching?

Caching bedeutet, dass häufig angeforderte Inhalte temporär gespeichert werden – z. B. im Arbeitsspeicher oder auf der Festplatte. Anstatt dieselbe Anfrage jedes Mal neu zu verarbeiten, liefert der Server einfach eine gespeicherte Kopie der Antwort.

Das spart:

  • Rechenleistung
  • Bandbreite
  • Ladezeit

Ein gut konfigurierter Cache kann den Unterschied zwischen einer trägen Seite und einer ultraschnellen Webanwendung ausmachen.

2. Arten von Caching in NGINX

NGINX bietet verschiedene Caching-Mechanismen – vom statischen Dateicache bis hin zum Proxy-Cache für dynamische Inhalte.

Typ Beschreibung Beispiel
Static File Cache Zwischenspeicherung von HTML, CSS, JS, Bildern usw. expires und cache-control Header
Proxy Cache Zwischenspeicherung von dynamischen API- oder Backend-Antworten proxy_cache
FastCGI Cache Zwischenspeicherung von PHP- oder CGI-Inhalten fastcgi_cache
Microcaching Extrem kurzes Caching (Sekundenbereich) für APIs proxy_cache_valid 1s

3. Caching statischer Inhalte (HTML, CSS, JS, Bilder)

Für statische Dateien reicht schon eine einfache Regel:

location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg|woff2?)$ {
    expires 30d;
    add_header Cache-Control "public, no-transform";
}

Diese Anweisung bewirkt:

  • Dateien werden 30 Tage lang im Browsercache gespeichert.
  • Der Header Cache-Control: public erlaubt, dass auch CDNs oder Proxys diese Inhalte zwischenspeichern dürfen.

Tipp: Bei Design- oder Script-Änderungen sollte der Dateiname (z. B. durch Versionsnummern) geändert werden, damit der Browser den Cache neu lädt.

4. Proxy Caching für dynamische Inhalte

Wenn dein NGINX als Reverse Proxy vor einem Backend (z. B. Node.js, Django oder PHP-FPM) steht, kannst du Antworten des Backends zwischenspeichern.

Beispiel:

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;
proxy_cache_key "$scheme$request_method$host$request_uri";

server {
    listen 80;
    server_name api.meine-seite.de;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_cache my_cache;
        proxy_cache_valid 200 302 10m;
        proxy_cache_valid 404 1m;
        add_header X-Cache-Status $upstream_cache_status;
    }
}

Erklärung:

  • proxy_cache_path → definiert, wo der Cache gespeichert wird und wie groß er sein darf
  • proxy_cache_valid → legt fest, wie lange Antworten zwischengespeichert werden
  • X-Cache-Status → zeigt im Header, ob eine Antwort aus dem Cache (HIT) oder vom Backend (MISS) stammt

Test im Browser oder mit curl:

curl -I http://api.meine-seite.de

Antwort:

X-Cache-Status: HIT

5. Caching von API-Antworten (Microcaching)

APIs liefern oft viele identische Antworten in kurzer Zeit. Mit Microcaching kannst du diese für wenige Sekunden speichern – das entlastet das Backend erheblich.

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=microcache:20m max_size=1g inactive=60s;
proxy_cache_key "$scheme$request_method$host$request_uri";

server {
    listen 80;
    server_name api.meine-seite.de;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_cache microcache;
        proxy_cache_valid 200 1s;
        add_header X-Cache-Status $upstream_cache_status;
    }
}

Ideal für stark frequentierte APIs mit vielen identischen Requests pro Sekunde (z. B. Produktlisten, Nachrichten, Status-Endpoints).

6. Cache-Invalidierung (löschen oder aktualisieren)

Manchmal sollen Cache-Einträge gezielt gelöscht oder aktualisiert werden – z. B. nach einem CMS-Update.

Möglichkeiten:

  • Cache-Verzeichnis leeren:

    sudo rm -rf /var/cache/nginx/*
    
  • Cache-Timeout verkürzen (z. B. expires 10m)
  • Bei Proxy-Caches kannst du auch Conditional GET Requests aktivieren (ETag oder Last-Modified Header)

Tipp: Verwende für professionelle Systeme Tools wie Purge Cache, Redis-Integration oder Cache-Tags.

7. Performance-Tipps für Caching mit NGINX

Cache auf SSD speichern – für hohe Geschwindigkeit ✅ X-Cache-Header aktivieren – zur Analyse von Hits und Misses ✅ Nicht zu lange Cachezeiten – dynamische Inhalte sonst veraltet ✅ Kombination mit HTTP/2 & Gzip – für maximale Effizienz ✅ Cache-Verzeichnisse regelmäßig bereinigen

📈 Überwachung und Debugging

Zur Kontrolle, ob dein Cache aktiv ist:

sudo tail -f /var/log/nginx/access.log

oder analysiere mit:

grep HIT /var/log/nginx/access.log | wc -l

Auch im Browser kannst du prüfen, ob die Antwort aus dem Cache stammt:

X-Cache-Status: HIT

Wenn du MISS siehst, wurde der Inhalt frisch vom Backend geladen.

Caching mit NGINX ist ein einfacher, aber extrem wirkungsvoller Hebel für mehr Performance. Ob statische Dateien, APIs oder dynamische Webseiten – mit nur wenigen Zeilen Konfiguration kannst du Antwortzeiten halbieren und Serverlast drastisch senken.

Richtig eingesetzt, verwandelt sich NGINX in ein Highspeed-Frontend, das deine Inhalte intelligent zwischenspeichert und blitzschnell ausliefert.