Caching

Quino hat einen Built-in Query-Cache der fĂĽr einzelne Klassen aktiviert werden kann. Der Cache generiert basierend auf dem Query welches ĂĽber die API kommt einen entsprechenden Cache-Key und speichert das Resultat der Abfrage im Memory.

Technisch basiert der Cache auf dem Microsoft InMemory-Caching.

API

Der Cache kann auf einer einzelnen Klasse wie folgt aktiviert werden:

Elements.Company = Builder.Add.Class(nameof(Elements.Company)).Cache()

Die Methode stellt verschiedene Overloads zur Verfügung um die Dauer, respektive den Ablauf der Cache-Einträge zu setzen.

Der folgende Eintrag setzt die absolute Cache-Dauer auf 4-Stunden:

.Cache(TimeSpan.FromHours(4))

Der folgende Eintrag setzt die absolute und relative Dauer auf 4-Stunden:

.Cache(TimeSpan.FromHours(4), TimeSpan.FromHours(4))

Der relative Ablauf basiert auf den letzten Aufruf des Cache-Eintrags. Wird ein Eintrag während dieser Dauer nicht mehr abgefragt so wird er aus dem Cache entfernt.

Defaults

Die Standardeinstellung des Caches kann ĂĽber das Configuration System ĂĽberschrieben werden.

.Configure<QueryCacheDataHandlerOptions>(x => { x.AbsoluteExpirationInMinutes = 60; x.SlidingExpirationInMinutes = 60; })

Alternativ kann der Cache auch ĂĽber das appsettings konfiguriert werden:

"QueryCache": { "AbsoluteExpirationInMinutes": 60, "SlidingExpirationInMinutes": 60 }

Die Standardeinstellungen werden verwendet wenn keine expliziten Einstellungen fĂĽr eine Klasse konfiguriert werden.

Eviction

Abgelaufene Cache-Einträge werden heute aktiv aus dem Memory entfernt.

Wird eine Entität aktualisiert die im Cache ist so werden sämtliche Einträge dieser Klasse aus dem Cache entfernt.

Im Falle eines vollen Caches wir die Standard-Logik von MS angewendet um Cache-Einträge zu eliminieren.

 

Â