Caching
Kurz: Der Vorgang, Daten in einem Cache zwischenzuspeichern, um zukünftige Zugriffe zu beschleunigen.
Genauer: Caching-Strategien unterscheiden sich darin, wie lange (TTL) und wie ein Cache aktualisiert wird — z. B. “Cache-Invalidierung” beim Ändern der Originaldaten, oder “Stale-while-revalidate”, bei dem veraltete Daten kurz weiter ausgeliefert werden, während im Hintergrund neu geladen wird.
Im Detail
Gängige Caching-Strategien in der Praxis:
- Cache-Invalidierung: Beim Ändern der Originaldaten wird der zugehörige Cache-Eintrag aktiv gelöscht oder überschrieben — genau, aber aufwendig zu implementieren (“es gibt nur zwei schwere Probleme in der Informatik: Cache-Invalidierung und Benennung von Dingen”).
- TTL-basiertes Ablaufen: Einträge verfallen einfach nach einer festen Zeit (siehe TTL), unabhängig davon, ob sich die Daten wirklich geändert haben — einfach, aber ungenau (entweder zu kurz und der Cache bringt wenig, oder zu lang und Nutzer sehen veraltete Daten).
- Stale-while-revalidate: Ein abgelaufener Cache-Eintrag wird trotzdem noch einmal ausgeliefert, während im Hintergrund parallel neu geladen wird — Nutzer bekommen nie eine langsame Anfrage zu spüren, auf Kosten von kurzzeitig leicht veralteten Daten.
- Cache-Tags: Einträge werden mit Schlagworten markiert, sodass gezielt alle betroffenen Einträge auf einmal invalidiert werden können, wenn sich z. B. ein bestimmtes Produkt ändert, ohne den kompletten Cache zu leeren.
Next.js nutzt intern mehrere dieser Strategien gleichzeitig (Router-Cache, Data-Cache, Full-Route-Cache) — welche davon greift, hängt von der jeweiligen Route und den verwendeten Fetch-Optionen ab.