ASP.NET Core je štíhly a modulárny rámec, ktorý možno použiť na vytváranie vysoko výkonných moderných webových aplikácií v systémoch Windows, Linux alebo MacOS. Na rozdiel od staršieho ASP.NET nemá ASP.NET Core a Cache
objekt. ASP.NET Core však poskytuje podporu pre niekoľko rôznych typov ukladania do pamäte cache vrátane ukladania do pamäte cache, distribuovaného ukladania do vyrovnávacej pamäte a ukladania do vyrovnávacej pamäte odpovedí.
V tomto článku sa pozrieme na to, ako môžete zvýšiť výkon a škálovateľnosť svojej aplikácie ASP.NET Core ukladaním zriedkavo meniacich sa údajov do medzipamäte v pamäti. Ako vždy, uvediem príklady kódu na ilustráciu diskutovaných konceptov.
Ako povoliť ukladanie do pamäte cache v ASP.NET Core
Medzipamäť v pamäti v ASP.NET Core je služba, ktorú môžete začleniť do svojej aplikácie pomocou vkladania závislostí. Po vytvorení projektu ASP.NET Core v Visual Studio môžete povoliť medzipamäť v pamäti Konfigurovať služby
metóda v Začiatok
triedy, ako je uvedené v útržku kódu nižšie.
public void ConfigureServices (služby IServiceCollection){
services.AddMvc ();
services.AddMemoryCache ();
}
Ak chcete pracovať s medzipamäťou v pamäti v ASP.NET Core, musíte použiť IMemoryCache
rozhranie. Vyzerá to takto:
verejné rozhranie IMemoryCache: IDisposable{
bool TryGetValue (kľúč objektu, hodnota out objektu);
ICacheEntry CreateEntry (kľúč objektu);
void Remove (kľúč objektu);
}
Môžete sa zaregistrovať IMemoryCache
vConfigServices
metóda využívajúca AddMemoryCache
metóda, ktorú sme skúmali vyššie. Potom by ste mali vložiť objekt medzipamäte do konštruktora vašej triedy ovládačov, ako je znázornené v útržku kódu nižšie.
súkromná medzipamäť IMemoryCache;verejná CacheController (medzipamäť IMemoryCache)
{
this.cache = cache;
}
A to je všetko, čo musíte urobiť, aby ste vo svojej aplikácii ASP.NET Core nastavili podporu pre ukladanie do pamäte cache. V nasledujúcej časti sa pozrieme na to, ako môžeme pracovať s cache API v ASP.NET Core na ukladanie a načítanie objektov.
Ako ukladať a načítať objekty pomocou technológie ASP.NET Core IMemoryCache
Na uloženie objektu pomocou IMemoryCache
musíte použiť rozhranie Sada ()
uvedenou v útržku kódu nižšie. Upozorňujeme, že verzia Sada ()
metóda, ktorú sme použili v tomto príklade, akceptuje dva parametre. Prvý parameter je názov kľúča a druhým parametrom je hodnota, t. J. Objekt, ktorý sa má uložiť do medzipamäte a ktorý je možné identifikovať pomocou kľúča.
[HttpGet]verejný reťazec Get ()
{
cache.Set („Kľúč“, DateTime.Now.ToString ());
návrat „Toto je testovacia metóda ...“;
}
Na načítanie položky z medzipamäte môžete využiť Získať ()
metóda uvedená nižšie.
[HttpGet („{key}“)]public string Get (reťazcový kľúč)
{
vrátiť cache.Get (kľúč);
}
Môžete použiť TryGet ()
metóda na objekte medzipamäte, aby sa skontrolovalo, či existuje zadaný kľúč v pamäti cache. Tu je upravená verzia nášho Získajte
metóda, ktorá ilustruje, ako sa to dá dosiahnuť.
[HttpGet]verejný reťazec Get ()
{
reťazcový kľúč;
string obj;
if (! cache.TryGetValue (kľúč, von obj))
{
obj = DateTime.Now.ToString ();
cache.Set (key, obj);
}
návrat obj;
}
Existuje ešte jedna metóda, tzv GetOrCreate
, ktoré možno použiť na načítanie údajov z medzipamäte na základe poskytnutého kľúča. Ak kľúč neexistuje, metóda ho vytvorí.
[HttpGet]verejný reťazec Get ()
{
vrátiť cache.GetOrCreate („kľúč“,
cacheEntry => {
vrátiť DateTime.Now.ToString ();
});
}
Upozorňujeme, že je k dispozícii asynchrónna verzia tejto metódy s názvom GetOrCreateAsync
. Tu je kompletný zoznam našich kódov CacheController
triedy pre vašu referenciu.
pomocou systému;pomocou Microsoft.AspNetCore.Mvc;
pomocou Microsoft.Extensions.Caching.Memory;
menný priestor InMemoryCaching.Controlers
{
[Route („api / [controller]“)]]
verejná trieda CacheController: radič
{
súkromná medzipamäť IMemoryCache;
verejná CacheController (medzipamäť IMemoryCache)
{
this.cache = cache;
}
[HttpGet]
verejný reťazec Get ()
{
vrátiť cache.GetOrCreate („kľúč“,
cacheEntry => {
vrátiť DateTime.Now.ToString ();
});
}
}
}
Ako nastaviť zásady vypršania platnosti pre dáta v pamäti cache v ASP.NET Core
Upozorňujeme, že pre svoje dáta v pamäti môžete nastaviť absolútne a posuvné pravidlá uplynutia platnosti. Zatiaľ čo prvé sa používa na určenie doby, po ktorú by sa mal objekt nachádzať v pamäti cache, druhé sa používa na určenie doby, po ktorú bude objekt ležať v pamäti, keď nie je vykonaná žiadna aktivita - tj. Položka bude odstránená z cache, keď uplynie zadané trvanie nečinnosti.
Na nastavenie pravidiel uplynutia platnosti používate MemoryCacheEntryOptions
triedy, ako je uvedené v útržku kódu nižšie.
MemoryCacheEntryOptions cacheExpirationOptions = nový MemoryCacheEntryOptions ();cacheExpirationOptions.AbsoluteExpiration = DateTime.Now.AddMinutes (30);
cacheExpirationOptions.Priority = CacheItemPriority.Normal;
cache.Set („Kľúč“, DateTime.Now.ToString (), cacheExpirationOptions);
Všimnite si použitie Priorita
majetok na MemoryCacheEntryOptions
napríklad v útržku kódu vyššie. The Priorita
vlastnosť určuje, ktoré objekty (na základe už nastavenej priority) by mali byť odstránené z medzipamäte ako súčasť stratégie runtime na získanie pamäte, kedykoľvek dôjde webovému serveru k nedostatku pamäte.
Na nastavenie priority sme použili CacheItemPriority
enum. Môže to mať jednu z týchto možných hodnôt: Nízka, Normálna, Vysoká a NeverRemove. Poskytovateľ medzipamäte v pamäti v ASP.NET Core odstráni položky medzipamäte, keď je pod tlakom pamäte, pokiaľ nemáte nastavenú prioritu medzipamäte CacheItemPriority.NeverRemove
.
Možno budete tiež chcieť zaregistrovať spätné volanie, ktoré sa vykoná vždy, keď je položka odstránená z medzipamäte. Nasledujúci úryvok kódu ilustruje, ako je to možné dosiahnuť.
cacheExpirationOptions.RegisterPostEvictionCallback(CacheItemChangedHandler, toto);
Môžete dokonca nastaviť závislosti medzi objektmi vo vyrovnávacej pamäti. Napríklad môžete odstrániť niektoré položky z medzipamäte, ak boli odstránené niektoré súvisiace položky. Túto a ďalšie mnoho ďalších funkcií ukladania do pamäte cache v ASP.NET Core preskúmame v mojich budúcich príspevkoch tu. Do tej doby si možno budete chcieť pozrieť príslušné stránky v dokumentácii ASP.NET Core spoločnosti Microsoft.
Ako urobiť viac v ASP.NET a ASP.NET Core:
- Ako používať ukladanie do pamäte cache v ASP.NET Core
- Ako spracovať chyby v webovom rozhraní API ASP.NET
- Ako odovzdať viaceré parametre metódam radiča webového API
- Ako prihlásiť metadáta požiadaviek a odpovedí do webového rozhrania ASP.NET Web API
- Ako pracovať s HttpModules v ASP.NET
- Pokročilé spravovanie verzií v webovom rozhraní API ASP.NET Core
- Ako používať vkladanie závislostí v ASP.NET Core
- Ako pracovať s reláciami v ASP.NET
- Ako pracovať s HTTPHandlers v ASP.NET
- Ako používať IHostedService v ASP.NET Core
- Ako spotrebovať službu WCF SOAP v ASP.NET Core
- Ako zlepšiť výkon aplikácií ASP.NET Core
- Ako konzumovať webové rozhranie API ASP.NET Core pomocou nástroja RestSharp
- Ako pracovať s prihlásením do ASP.NET Core
- Ako používať MediatR v ASP.NET Core
- Ako pracovať so stavom relácie v ASP.NET Core
- Ako používať Nancy v ASP.NET Core
- Pochopte väzbu parametrov vo webovom rozhraní API ASP.NET
- Ako nahrávať súbory v ASP.NET Core MVC
- Ako implementovať globálne spracovanie výnimiek v webovom rozhraní API ASP.NET Core
- Ako implementovať kontroly stavu v ASP.NET Core
- Najlepšie postupy pri ukladaní do pamäte cache v ASP.NET
- Ako používať zasielanie správ Apache Kafka v .NET
- Ako povoliť CORS vo vašom webovom rozhraní API
- Kedy použiť WebClient vs. HttpClient vs. HttpWebRequest
- Ako pracovať s Redis Cache v .NET
- Kedy použiť Task.WaitAll vs. Task.WhenAll v .NET