Skip to content

Caching

Anders Bråthen Nomerstad edited this page Nov 3, 2024 · 8 revisions

Cache-løsningen vår har fire lag:

  • Frontend HTML cache in-memory på hver XP-frontend pod
  • Frontend HTML cache i Redis
  • Frontend cache for JSON-response fra XP sitecontent-service i Redis
  • Backend cache i XP sitecontent-service

Redis HTML-cache

HTML-cachen har keys på dette formatet: <path>:<deploy-miljø>:render:<frontend-build-id>:<dekoratøren-build-id>

F.eks: /min-path:prod:render:1234abcd:4321bcda

Key'en er dermed unik for hver kombinasjon av path, miljø, app-versjon og dekoratør-versjon. App- eller dekoratør-versjon kan påvirke HTML'en som rendres, og denne cachen kan derfor ikke være persistent på tvers av app/dekoratør-versjoner. HTML-cache har TTL på 24 timer, og TTL resettes til 24 timer ved hver get-request til Redis.

Redis JSON-cache

Cacher JSON-response fra XP. JSON-cachen har keys på dette formatet: <path>:<deploy-miljø>:xp-response

Denne cachen vil være persistent på tvers av app og dekoratør-versjoner. JSON cachen har TTL på 72 timer (resettes ikke).

XP Backend-cache

Backend-cachen får en ny key prefix for hvert eneste publiserings-event fra XP/revalidator-proxy, slik at denne aldri trenger å invalideres. Den er av samme grunn som regel ganske kortvarig.

Sekvens for cache-lookups

xp-cache-response-flow



Invalidering av cachen

Når et innhold publiseres eller avpubliseres i XP, sender XP et kall til frontend for invalidering av cachen. Dette kallet går via revalidator-proxy. Denne appen har mulighet til å kalle XP-frontend poddene individuelt, slik at disse kan slette sin lokale cache.

xp-cache-invalidation

Clone this wiki locally