asp.net-core
Caching
Suche…
Einführung
Die Zwischenspeicherung trägt zur Verbesserung der Leistung einer Anwendung bei, indem eine leicht zugängliche Kopie der Daten beibehalten wird. Aspnet Core wird mit zwei benutzerfreundlichen und testfähigen Caching-Abstraktionen geliefert .
Im Speichercache werden Daten im Cache des lokalen Servers gespeichert.
Der verteilte Cache speichert den Datencache an einem zentralen Ort, auf den Server im Cluster zugreifen können. Es werden standardmäßig drei Implementierungen geliefert: In Memory (für Unit-Tests und lokales Gerät), Redis und SQL Server.
InMemory-Cache in ASP.NET Core-Anwendung verwenden
project.json
Ihrer project.json
Datei die folgenden Abhängigkeiten hinzu, um einen Cache-Speicher in Ihrer ASP.NET-Anwendung zu verwenden:
"Microsoft.Extensions.Caching.Memory": "1.0.0-rc2-final",
Fügen Sie den Cache-Dienst (von Microsoft.Extensions.Caching.Memory) zur ConfigureServices-Methode in der Startklasse hinzu
services.AddMemoryCache();
Um dem Cache Elemente in unserer Anwendung hinzuzufügen, verwenden wir IMemoryCache
der wie unten gezeigt in jede Klasse (z. B. Controller) IMemoryCache
kann.
private IMemoryCache _memoryCache;
public HomeController(IMemoryCache memoryCache)
{
_memoryCache = memoryCache;
}
Get gibt den Wert zurück, wenn er existiert, ansonsten aber null
.
// try to get the cached item; null if not found
// greeting = _memoryCache.Get(cacheKey) as string;
// alternately, TryGet returns true if the cache entry was found
if(!_memoryCache.TryGetValue(cacheKey, out greeting))
Verwenden Sie die Set- Methode, um in den Cache zu schreiben. Set akzeptiert den Schlüssel, mit dem der Wert, der zwischengespeicherte Wert und eine Reihe von MemoryCacheEntryOptions
. Mit den MemoryCacheEntryOptions
können Sie den absoluten oder gleitenden zeitabhängigen Cache-Ablauf, die Zwischenspeicherungspriorität, Rückrufe und Abhängigkeiten angeben. Eines der Beispiele unten-
_memoryCache.Set(cacheKey, greeting,
new MemoryCacheEntryOptions()
.SetAbsoluteExpiration(TimeSpan.FromMinutes(1)));
Verteiltes Caching
Um den verteilten Cache zu nutzen, müssen Sie auf eine der verfügbaren Implementierungen verweisen:
Beispielsweise registrieren Sie die Implementierung von Redis wie folgt:
public void ConfigureServices(IServiceCollection services)
{
services.AddDistributedRedisCache(options =>
{
options.Configuration = "ServerAdress";
options.InstanceName = "InstanceName";
});
}
IDistributedCache
Sie die IDistributedCache
Abhängigkeit dort an, wo Sie sie benötigen:
public class BooksController { private IDistributedCache distributedCache; public BooksController(IDistributedCache distributedCache) { this.distributedCache = distributedCache; } [HttpGet] public async Task<Books[]> GetAllBooks() { var serialized = this.distributedCache.GetStringAsync($"allbooks"); Books[] books = null; if (string.IsNullOrEmpty(serialized)) { books = await Books.FetchAllAsync(); this.distributedCache.SetStringAsync($"allbooks", JsonConvert.SerializeObject(books)); } else { books = JsonConvert.DeserializeObject<Books[]>(serialized); } return books; } }