Server-Side Caching mit Nginx: So beschleunigen Sie Ihre Hugo-Website

TAKO // WISSENSWERTES

Eine statische Website, die mit Hugo generiert wurde, ist bereits äußerst performant. Doch selbst statische Seiten können durch den gezielten Einsatz von Server-Side Caching noch schneller ausgeliefert werden. In diesem Beitrag erfahren Sie, wie Sie mithilfe von Nginx ein effizientes Caching-System für Ihre Website aufsetzen.


Warum Server-Side Caching?

Beim Server-Side Caching werden bereits gerenderte Inhalte (z. B. HTML-Dateien) temporär auf dem Server gespeichert. So kann Nginx bei wiederholten Anfragen dieselben Inhalte direkt aus dem Cache liefern – ohne das Dateisystem oder eine Upstream-Anwendung erneut zu belasten. Das spart Rechenzeit, reduziert die Latenz und verbessert die User Experience erheblich.


Voraussetzungen

  • Eine funktionierende Nginx-Installation
  • Eine laufende Hugo-Website (z. B. generiert in /var/www/hugo)
  • Grundkenntnisse in Linux-Serverkonfiguration

Schritt 1: Cache-Verzeichnis definieren

Zunächst definieren Sie einen Ort, an dem Nginx die zwischengespeicherten Dateien ablegen soll. Fügen Sie dazu in Ihrer Nginx-Konfiguration (z. B. /etc/nginx/nginx.conf) im http-Block Folgendes hinzu:

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=hugo_cache:10m max_size=1g inactive=60m use_temp_path=off;

Erklärung:

  • proxy_cache_path legt das Cache-Verzeichnis fest.
  • keys_zone reserviert 10 MB Speicher für Cache-Metadaten.
  • max_size begrenzt die Cache-Größe auf 1 GB.
  • inactive gibt an, wie lange ungenutzte Einträge im Cache verbleiben.
  • use_temp_path=off sorgt für effizientere I/O-Operationen.

Schritt 2: Caching im Server-Block aktivieren

Bearbeiten Sie Ihre Server-Konfiguration (z. B. /etc/nginx/sites-available/hugo.conf):

server {
    listen 80;
    server_name example.com;
    root /var/www/hugo;

    location / {
        proxy_cache hugo_cache;
        proxy_cache_valid 200 1h;
        proxy_cache_use_stale error timeout updating;
        add_header X-Cache-Status $upstream_cache_status;

        try_files $uri $uri/ =404;
    }
}

Erläuterung:

  • proxy_cache hugo_cache aktiviert das zuvor definierte Cache-Ziel.
  • proxy_cache_valid 200 1h legt fest, dass erfolgreiche Antworten eine Stunde gültig sind.
  • proxy_cache_use_stale erlaubt Nginx, alte Inhalte auszuliefern, falls der Upstream-Server nicht erreichbar ist.
  • add_header X-Cache-Status zeigt an, ob der Cache genutzt wurde (HIT, MISS, BYPASS usw.).

Schritt 3: Cache testen

Nach einem Neustart von Nginx:

$ sudo systemctl restart nginx

können Sie mit curl überprüfen, ob das Caching aktiv ist:

$ curl -I http://example.com

Achten Sie dabei auf den Header X-Cache-Status:

  • MISS → Die Seite wurde frisch geladen und in den Cache geschrieben.
  • HIT → Die Seite wurde aus dem Cache geliefert.
  • EXPIRED → Der Eintrag war abgelaufen und wurde erneuert.

Schritt 4: Optional – Cache selektiv deaktivieren

Für dynamische Inhalte (z. B. Suchergebnisse oder Formulare) können Sie das Caching gezielt ausschalten:

location /search {
    proxy_no_cache 1;
    proxy_cache_bypass 1;
}

So wird verhindert, dass personalisierte Inhalte zwischengespeichert werden.


Fazit

Durch die Integration eines Server-Side Caches in Nginx erhöhen Sie die Performance Ihrer Hugo-Website deutlich. Gerade bei häufig aufgerufenen Seiten oder hohen Besucherzahlen amortisiert sich der geringe Konfigurationsaufwand schnell. Nginx fungiert so nicht nur als Reverse Proxy, sondern auch als intelligenter Cache-Layer, der Ihre Inhalte blitzschnell ausliefert.