API-Referenz

Seiten-Cache

Öffentliche Seiten werden nach dem ersten Rendern im Arbeitsspeicher zwischengespeichert und danach direkt ausgeliefert – ohne Datenbankzugriff und Template-Rendering.

  • Schlüssel: Website + Pfad + Query-String (/blog?seite=2 ist ein eigener Eintrag; gleiche Pfade verschiedener Websites sind getrennt).
  • Ablauf: Einträge verfallen spätestens um Mitternacht (Serverzeit), damit today in Templates stimmt.
  • Invalidierung: Jede erfolgreiche Änderung über die API (Seiten, Snippets, CSS/JS, Collections, Einträge, Dateien, REST-Quellen, Workflows – auch Änderungen, die ein Workflow über die API vornimmt) und jeder abgeschlossene Import leert den gesamten Cache. Read-only-Aufrufe wie die Vorschau, POST /markdown oder POST /sources/test lassen ihn unberührt.
  • REST-Quellen: Nutzt eine Seite data() mit einer REST-Quelle, bleibt sie höchstens so lange im Cache wie deren cache_ttl. Bei cache_ttl: 0 wird sie nicht gecacht.
  • Ausnahmen: Seiten mit no_cache: true, Admin-Vorschauen (?preview=1), 404- und Fehlerseiten werden nie gecacht.
  • Größe: Begrenzt über die Startoption -cache-mb (Standard 128, 0 = aus); bei Überschreitung fliegen die am längsten nicht genutzten Seiten raus.
  • HTTP: Antworten tragen ETag und Cache-Control: no-cache – Browser fragen per If-None-Match nach und erhalten bei unveränderten Seiten 304 Not Modified. gzip wird einmal pro Eintrag vorberechnet. Der Header X-Cache zeigt HIT, MISS oder BYPASS.

GET /cache 🔑

{ "enabled": true, "entries": 42, "bytes": 3145728, "max_bytes": 134217728, "hits": 1290, "misses": 57 }

DELETE /cache ✏️

Leert den Cache manuell. 204.