asp.net-core
Buforowanie
Szukaj…
Wprowadzenie
Buforowanie pomaga poprawić wydajność aplikacji poprzez utrzymanie łatwo dostępnej kopii danych. Aspnet Core zawiera dwie łatwe w użyciu i testujące przyjazne abstrakcje buforowania.
Pamięć podręczna będzie przechowywać dane w pamięci podręcznej lokalnego serwera.
Rozproszona pamięć podręczna przechowuje pamięć podręczną danych w scentralizowanej lokalizacji, do której dostęp mają serwery w klastrze. Jest dostarczany z trzema implementacjami od razu po wyjęciu z pudełka: In Memory (do testowania jednostkowego i lokalnego tworzenia), Redis i Sql Server.
Korzystanie z pamięci podręcznej InMemory w aplikacji ASP.NET Core
Aby użyć pamięci podręcznej w aplikacji ASP.NET, dodaj następujące zależności do pliku project.json
:
"Microsoft.Extensions.Caching.Memory": "1.0.0-rc2-final",
dodaj usługę pamięci podręcznej (z Microsoft.Extensions.Caching.Memory) do metody ConfigureServices w klasie Autostart
services.AddMemoryCache();
Aby dodać elementy do pamięci podręcznej w naszej aplikacji, użyjemy IMemoryCache
który można wstrzyknąć do dowolnej klasy (na przykład kontrolera), jak pokazano poniżej.
private IMemoryCache _memoryCache;
public HomeController(IMemoryCache memoryCache)
{
_memoryCache = memoryCache;
}
Get zwróci wartość, jeśli istnieje, ale w przeciwnym razie zwróci 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))
Użyj metody Set , aby zapisać w pamięci podręcznej. Zestaw akceptuje klucz używany do wyszukiwania wartości, wartość do buforowania oraz zestaw MemoryCacheEntryOptions
. MemoryCacheEntryOptions
umożliwia określenie bezwzględnego lub przesuwnego wygaśnięcia pamięci podręcznej, priorytetu buforowania, wywołań zwrotnych i zależności. Jedna z poniższych próbek
_memoryCache.Set(cacheKey, greeting,
new MemoryCacheEntryOptions()
.SetAbsoluteExpiration(TimeSpan.FromMinutes(1)));
Rozproszone buforowanie
Aby wykorzystać rozproszoną pamięć podręczną, musisz odwołać się do jednej z dostępnych implementacji:
Na przykład zarejestrujesz implementację Redis w następujący sposób:
public void ConfigureServices(IServiceCollection services)
{
services.AddDistributedRedisCache(options =>
{
options.Configuration = "ServerAdress";
options.InstanceName = "InstanceName";
});
}
Wymagaj zależności IDistributedCache
tam, gdzie jej potrzebujesz:
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; } }