Programmēšana

Kā izmantot atmiņas kešatmiņu ASP.NET Core

ASP.NET Core ir vienkāršs un modulārs ietvars, kuru var izmantot augstas veiktspējas, modernu tīmekļa lietojumprogrammu veidošanai operētājsistēmā Windows, Linux vai MacOS. Atšķirībā no mantotās ASP.NET, ASP.NET Core nav Kešatmiņa objekts. Tomēr ASP.NET Core nodrošina atbalstu vairākiem dažādiem kešatmiņas veidiem, ieskaitot atmiņas kešatmiņu, sadalīto kešatmiņu un atbildes kešatmiņu.

Šajā rakstā mēs aplūkosim, kā uzlabot ASP.NET Core lietojumprogrammas veiktspēju un mērogojamību, atmiņā saglabātajā kešatmiņā glabājot reti mainīgus datus. Kā vienmēr, es iekļaušu kodu piemērus, lai ilustrētu apspriestās koncepcijas.

Kā iespējot kešatmiņu atmiņā ASP.NET Core

ASP.NET Core atmiņā ievietotā kešatmiņa ir pakalpojums, kuru varat iekļaut savā lietojumprogrammā, izmantojot atkarības injekciju. Kad esat izveidojis ASP.NET Core projektu Visual Studio, varat iespējot atmiņā esošo kešatmiņu ConfigureServices metodi Uzsākt klase, kā parādīts zemāk esošajā koda fragmentā.

public void ConfigureServices (IServiceCollection pakalpojumi)

{

pakalpojumi.AddMvc ();

pakalpojumi.AddMemoryCache ();

}

Lai strādātu ar atmiņas kešatmiņu sistēmā ASP.NET Core, jums jāizmanto IMemoryCache interfeiss. Lūk, kā tas izskatās:

publiskā saskarne IMemoryCache: IDisposable

{

bool TryGetValue (objekta atslēga, objekta vērtība ārpus);

ICacheEntry CreateEntry (objekta atslēga);

void Remove (objekta atslēga);

}

Jūs varat reģistrēt IMemoryCache iekšConfigServices metodi, izmantojot AddMemoryCache metodi, kuru mēs pārbaudījām iepriekš. Tad jums jāinjicē kešatmiņas objekts kontroliera klases konstruktorā, kā parādīts zemāk esošajā koda fragmentā.

  privātā IMemoryCache kešatmiņa;

publiskā CacheController (IMemoryCache kešatmiņa)

        {

this.cache = kešatmiņa;

        }

Tas ir viss, kas jums jādara, lai iestatītu atbalstu atmiņas kešatmiņai jūsu ASP.NET Core lietojumprogrammā. Nākamajā sadaļā mēs apskatīsim, kā mēs varam strādāt ar kešatmiņas API ASP.NET Core, lai uzglabātu un izgūtu objektus.

Kā saglabāt un izgūt objektus, izmantojot ASP.NET Core IMemoryCache

Lai objektu saglabātu, izmantojot IMemoryCache interfeiss, kas jums jāizmanto Komplekts () metodi, kā parādīts tālāk esošajā koda fragmentā. Ņemiet vērā, ka Komplekts () Šajā piemērā izmantotā metode pieņem divus parametrus. Pirmais parametrs ir atslēgas nosaukums un otrais parametrs ir vērtība, t.i., objekts, kas jāsaglabā kešatmiņā, kuru var identificēt, izmantojot atslēgu.

[HttpGet]

publiskā virkne Get ()

        {

cache.Set (“Key”, DateTime.Now.ToString ());

atgriešanās “Šī ir testa metode ...”;

        }

Lai izgūtu vienumu no kešatmiņas, varat izmantot Gūt() metodi, kā parādīts zemāk.

  [HttpGet (“{key}”)]

publiskā virkne Get (virknes atslēga)

        {

atgriezt kešatmiņu. Get (atslēga);

        }

Jūs varat izmantot TryGet () metodi kešatmiņas objektā, lai pārbaudītu, vai norādītā atslēga pastāv kešatmiņā. Šeit ir mūsu modificētā versija gūt metode, kas parāda, kā to var sasniegt.

 [HttpGet]

publiskā virkne Get ()

        {

virknes atslēga;

virknes obj;

if (! cache.TryGetValue (atslēga, no obj))

            {

obj = DateTime.Now.ToString ();

kešatmiņa. Set (atslēga, obj);

            }

atgriešanās obj;

        }

Ir vēl viena metode, ko sauc GetOrCreate, ko var izmantot kešatmiņā saglabāto datu izgūšanai, pamatojoties uz norādīto atslēgu. Ja atslēga nepastāv, metode to izveido.

[HttpGet]

publiskā virkne Get ()

        {

atgriezt kešatmiņu. GetOrCreate (“Key”,

cacheEntry => {

atgriezt DateTime.Now.ToString ();

                         });

        }

Ņemiet vērā, ka ir pieejama šīs metodes asinhronā versija GetOrCreateAsync. Šeit ir pilns mūsu kodu kods CacheController klase jūsu zināšanai.

izmantojot sistēmu;

izmantojot Microsoft.AspNetCore.Mvc;

izmantojot Microsoft.Extensions.Caching.Memory;

nosaukumvieta InMemoryCaching. Kontrolieri

{

[Maršruts (“api / [kontrolieris]”)]

public class CacheController: kontrolieris

    {

privātā IMemoryCache kešatmiņa;

publiskā CacheController (IMemoryCache kešatmiņa)

        {

this.cache = kešatmiņa;

        }

[HttpGet]

publiskā virkne Get ()

        {

atgriezt kešatmiņu. GetOrCreate (“Key”,

cacheEntry => {

atgriezt DateTime.Now.ToString ();

                         });

        }

    }

}

Kā iestatīt derīguma termiņa politikas kešatmiņā saglabātajiem datiem ASP.NET Core

Ņemiet vērā, ka kešatmiņā saglabātajiem datiem varat iestatīt absolūtu un slīdošu derīguma termiņa politiku. Pirmais tiek izmantots, lai norādītu ilgumu, kurā objektam jāatrodas kešatmiņā, bet otro izmanto, lai norādītu ilgumu, kurā objekts uzturēsies kešatmiņā, kad nav aktivitātes, ti, vienums tiks noņemts no kešatmiņa, kad beidzas noteiktais neaktivitātes ilgums.

Lai iestatītu derīguma termiņa politikas, izmantojiet MemoryCacheEntryOptions klase, kā parādīts zemāk esošajā koda fragmentā.

MemoryCacheEntryOptions cacheExpirationOptions = new MemoryCacheEntryOptions ();

cacheExpirationOptions.AbsoluteExpiration = DateTime.Now.AddMinutes (30);

cacheExpirationOptions.Priority = CacheItemPriority.Normal;

cache.Set (“Key”, DateTime.Now.ToString (), cacheExpirationOptions);

Ievērojiet Prioritāte īpašums MemoryCacheEntryOptions gadījums iepriekš esošajā koda fragmentā. The Prioritāte rekvizīts norāda, kuri objekti (pamatojoties uz jau iestatīto prioritāti) ir jānoņem no kešatmiņas kā daļa no izpildlaika stratēģijas, lai atgūtu atmiņu ikreiz, kad tīmekļa serverim pietrūkst atmiņas.

Lai iestatītu prioritāti, mēs izmantojām CacheItemPriority enum. Tam var būt viena no šīm iespējamām vērtībām: Zema, Normāla, Augsta un NeverRemove. ASP.NET Core atmiņā esošās kešatmiņas nodrošinātājs noņems kešatmiņas ierakstus, ja tas ir pakļauts atmiņas spiedienam, ja vien kešatmiņas prioritāte nav iestatīta uz CacheItemPriority.NeverRemove.

Varat arī reģistrēt atzvanīšanu, kas tiks izpildīts ikreiz, kad vienums tiek noņemts no kešatmiņas. Šis koda fragments parāda, kā to var panākt.

cacheExpirationOptions.RegisterPostEvictionCallback

(CacheItemChangedHandler, šis);

Jūs pat varat iestatīt atkarību starp kešatmiņā saglabātajiem objektiem. Piemēram, ieteicams noņemt noteiktus vienumus no kešatmiņas, ja ir noņemts kāds saistīts vienums. Mēs turpmāk izpētīsim šo un daudzas citas kešatmiņas funkcijas ASP.NET Core manos turpmākajos ierakstos šeit. Līdz tam, iespējams, vēlēsities apskatīt atbilstošās lapas Microsoft ASP.NET Core dokumentācijā.

Kā darīt vairāk programmās ASP.NET un ASP.NET Core:

  • Kā izmantot atmiņas kešatmiņu ASP.NET Core
  • Kā rīkoties ar kļūdām ASP.NET Web API
  • Kā pārsūtīt vairākus parametrus Web API kontroliera metodēm
  • Kā reģistrēt pieprasījuma un atbildes metadatus ASP.NET Web API
  • Kā strādāt ar HttpModules ASP.NET
  • Uzlabota versiju veidošana ASP.NET Core Web API
  • Kā izmantot atkarības injekciju ASP.NET Core
  • Kā strādāt ar sesijām ASP.NET
  • Kā strādāt ar HTTPHandleriem ASP.NET
  • Kā izmantot IHostedService ASP.NET Core
  • Kā patērēt WCF SOAP pakalpojumu ASP.NET Core
  • Kā uzlabot ASP.NET Core lietojumprogrammu veiktspēju
  • Kā patērēt ASP.NET Core Web API, izmantojot RestSharp
  • Kā strādāt ar reģistrēšanos ASP.NET Core
  • Kā izmantot MediatR ASP.NET Core
  • Kā strādāt ar sesijas stāvokli ASP.NET Core
  • Kā Nancy izmantot ASP.NET Core
  • Izprotiet parametru saistīšanu ASP.NET Web API
  • Kā augšupielādēt failus ASP.NET Core MVC
  • Kā ieviest globālo izņēmumu apstrādi ASP.NET Core Web API
  • Kā ieviest veselības pārbaudes ASP.NET Core
  • Labākā prakse kešatmiņā ASP.NET
  • Kā izmantot Apache Kafka ziņojumapmaiņu .NET
  • Kā iespējot CORS savā tīmekļa API
  • Kad lietot WebClient pret HttpClient pret HttpWebRequest
  • Kā strādāt ar Redis kešatmiņu .NET
  • Kad .NET izmantot Task.WaitAll pret Task.WhenAll
$config[zx-auto] not found$config[zx-overlay] not found