DejaOptions
Globale Cache-Defaults, überschreibbar pro Query über
QueryParameters<T> und pro Key-Präfix über
DejaClient.SetDefaults.
public sealed class DejaOptionsEigenschaften#
| Eigenschaft | Typ | Standard | Beschreibung |
|---|---|---|---|
| DefaultStaleTime | TimeSpan | <code>TimeSpan.Zero</code> | Wie lange Daten nach einem erfolgreichen Fetch als frisch gelten. Solange sie frisch sind, bedient ein Execute mit Key den Cache und lädt nicht neu. |
| DefaultCacheTime | TimeSpan | <code>5 minutes</code> | Wie lange ein Eintrag ohne Subscriber überlebt, bevor er verdrängt wird. Eine Komponente, die innerhalb dieses Fensters erneut mountet, bekommt ihre Daten sofort. |
| DefaultRefetchOnMount | RefetchOnMount | <code>IfStale</code> | Ob ein Execute mit Key, das gecachte Daten vorfindet, im Hintergrund neu lädt. |
| MaxEntries | int? | <code>null (no cap)</code> | Optionale harte Obergrenze für Cache-Einträge. Wird sie überschritten, werden zuerst die am längsten nicht genutzten Einträge ohne Subscriber verdrängt. |
| EvictionInterval | TimeSpan | <code>1 minute</code> | Wie oft der Verdrängungsdurchlauf läuft. |
| StructuralComparison | bool | <code>false</code> | Wenn true, behält ein Eintrag, dessen Refetch einen Wert gleich dem aktuellen liefert (gemäß EqualityComparer<T>.Default), seine alte Referenz und überspringt die Benachrichtigung der Subscriber — Komponenten rendern also nicht neu für identische Daten. |
| TimeProvider | TimeProvider | <code>TimeProvider.System</code> | Uhr für Aktualität und Verdrängung; tausche sie in Tests gegen einen Fake. |
Stale-Time von null heißt nicht null Requests
Die Standard-Stale-Time von TimeSpan.Zero bedeutet: Gecachte Daten rendern
sofort, werden beim nächsten Mount aber immer im Hintergrund revalidiert — „gecacht“
heißt nicht „kein Request“, solange du sie nicht erhöhst.
QueryDefaults#
QueryDefaults#
public sealed class QueryDefaults
{
public TimeSpan? StaleTime { get; set; }
public TimeSpan? CacheTime { get; set; }
public RefetchOnMount? RefetchOnMount { get; set; }
}
Defaults pro Präfix, registriert über DejaClient.SetDefaults. Jede
Property, die null bleibt, fällt auf ein kürzeres passendes Präfix zurück, dann auf
DejaOptions. Werte pro Query auf
QueryParameters<T> schlagen beides.
client.SetDefaults(QueryKey.Of("countries"), new QueryDefaults
{
StaleTime = TimeSpan.FromHours(1),
RefetchOnMount = RefetchOnMount.Never,
});