DejaOptions

Globale Cache-Defaults, überschreibbar pro Query über QueryParameters<T> und pro Key-Präfix über DejaClient.SetDefaults.

public sealed class DejaOptions

Eigenschaften#

Eigenschaft TypStandardBeschreibung
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,
});