Cache

Use cache when Fluxheim sits in front of an origin and repeated responses should be served faster.

Proxy cache example

[cache]
enabled = true
default_ttl_secs = 300
max_object_bytes = "32MiB"
status_header = "X-Cache-Status"

[cache.memory]
enabled = true
max_size_bytes = "256MiB"

[cache.disk]
enabled = true
path = "/var/cache/fluxheim/site"
max_size_bytes = "10GiB"

Cache backends

Backend-EbeneNutze es, wenn
memoryYou need the fastest cache and can keep objects in RAM.
diskYou need cache capacity that survives process restarts.
tieredDu Speicher fur heisse Objekte und Disk fur grossere Kapazitat willst.
storage-binDu hohe Anderungsrate erwartest und begrenzte Disk-Allokation willst.
encrypted diskYou need cache-at-rest protection for disk objects.

Route cache policy

[[vhosts.routes]]
name = "assets"
path_prefix = "/assets/"
action = "proxy"

[vhosts.routes.proxy]
upstreams = ["127.0.0.1:3000"]

[vhosts.routes.cache]
enabled = true
status_ttls = { "200" = 3600, "404" = 60 }
content_types = ["text/css", "application/javascript", "image/*"]
extensions = ["css", "js", "png", "webp", "svg"]
include_query = false
stale_while_revalidate_secs = 30
stale_if_error_secs = 120

Advanced cache controls

SteuerungZweck
lockCollapse concurrent misses so one request fills the cache.
range.sliceCache fixed byte slices for large files and resumable downloads.
peer_fillLasse eine Edge von einer anderen Edge fullen, bevor der Origin genutzt wird.
origin_protectionBegrenze gleichzeitige Origin-Fills bei hohem Druck.
cache_purgerEntferne stale Disk-Eintrage in begrenzten Batches.

Use cache carefully

  • Anfragen mit Authorization oder Proxy-Authorization umgehen immer die Suche und Speicherung im gemeinsam genutzten Cache.
  • Fehlerhafte oder widersprüchliche Antwortanweisungen Cache-Control werden abgelehnt, anstatt auf konfigurierte TTLs zurückzugreifen. s-maxage hat Vorrang vor max-age.
  • must-revalidate, proxy-revalidate und s-maxage verhindern die Wiederverwendung veralteter Antworten nach Ablauf ihrer Frischezeit.
  • Keep cache keys bounded and predictable.
  • Verwenden Sie pro laufendem Fluxheim-Prozess genau ein Storage-Bin-Stammverzeichnis; die Eigentümerschaft nutzt eine beratende Dateisystemsperre, und gemeinsam beschreibbare Stammverzeichnisse sind ohne verifizierte externe Sperrung unsicher.
  • Nutze Purge oder kurze TTLs, wenn sich Inhalte häufig ändern.
  • Bypass on cookies, preview headers, and unsafe query strings.

Hinweis zum Upgrade des verschlüsselten Caches

Fluxheim 1.7.12 stellt verschlüsselte Festplatten-Cache-Objekte auf an die Cache-Wurzel gebundene Daten- und Indexschlüssel mit dauerhaft gespeichertem Nonce-Zustand um. Beim ersten Start mit einer älteren verschlüsselten Cache-Wurzel und bei jeder lokalen Schlüsselrotation wird dieser Cache vor der Annahme von Datenverkehr absichtlich vollständig geleert.

  • Verschlüsselte Cache-Daten sind entbehrlich und dürfen nicht als maßgebliche Datenquelle behandelt werden.
  • Geben Sie jedem Cache-Root dauerhaften privaten Speicher und kopieren Sie den Nonce-Status nicht zwischen unabhängigen Roots.
  • Stellen Sie sicher, dass der Ursprungsserver das erste Aufwärmen des Caches nach einem Upgrade oder Schlüsselwechsel bewältigen kann.
Deutsch