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.