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 applicatifUtilisez-le quand
memoryYou need the fastest cache and can keep objects in RAM.
diskYou need cache capacity that survives process restarts.
tieredVous voulez la memoire pour les objets chauds et le disque pour une plus grande capacite.
storage-binVous prevoyez beaucoup de renouvellement et voulez une allocation disque bornee.
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

ControleObjectif
lockCollapse concurrent misses so one request fills the cache.
range.sliceCache fixed byte slices for large files and resumable downloads.
peer_fillLaisser un edge remplir depuis un autre edge avant d'utiliser l'origine.
origin_protectionLimiter les remplissages d'origine simultanes sous forte pression.
cache_purgerNettoyer les entrees disque obsoletes par lots bornes.

Use cache carefully

  • Les requêtes transportant Authorization ou Proxy-Authorization contournent toujours la recherche et le stockage dans le cache partagé.
  • Les directives Cache-Control de réponse mal formées ou conflictuelles sont rejetées au lieu de revenir aux TTL configurées ; s-maxage est prioritaire sur max-age.
  • must-revalidate, proxy-revalidate et s-maxage interdisent la réutilisation périmée après l'expiration de la fraîcheur.
  • Keep cache keys bounded and predictable.
  • Utilisez une seule racine de storage-bin par processus Fluxheim en cours d’exécution; la propriété repose sur un verrou consultatif du système de fichiers, et les racines partagées en écriture multiple sont dangereuses sans verrouillage externe vérifié.
  • Utilisez purge ou des TTL courts quand le contenu change souvent.
  • Bypass on cookies, preview headers, and unsafe query strings.

Note de mise à niveau du cache chiffré

Fluxheim 1.7.12 utilise, pour les objets du cache disque chiffré, des clés de données et d'index liées à chaque racine de cache ainsi qu'un état de nonce persistant. Au premier démarrage avec une ancienne racine chiffrée et après chaque rotation de clé locale, ce cache est volontairement purgé avant d'accepter du trafic.

  • Les données du cache chiffré sont jetables et ne doivent pas être considérées comme une source faisant autorité.
  • Attribuez un stockage privé persistant à chaque racine de cache et ne copiez pas l'état des nonces entre des racines indépendantes.
  • Vérifiez que le serveur d'origine peut absorber le premier préchauffage du cache après une mise à niveau ou une rotation de clé.
Français