Bästa metoder för cachning i ASP.Net

Caching är en strategi för statshantering som ofta antas i ASP.Net för att förbättra applikationens prestanda genom att minimera resursförbrukningen i ditt system. Om det används korrekt kan det förbättra prestandan för din applikation avsevärt genom att lagra wWb-sidan helt eller delvis, eller till och med lagra applikationens data över HTTP-förfrågningar. Caching gör att webbsidan kan återges snabbare, och korrekt användning av caching minimerar eller minskar databasträffar eller förbrukning av serverns resurser.

Caching i ASP.Net är av följande tre typer:

  1. sidoutmatningscaching
  2. cachning av sidfragment
  3. datacaching

Sidoutmatningscaching

Detta är en form av cachning i ASP.Net som lagrar en kopia av din webbsida i minnescachen så att efterföljande förfrågningar om samma webbsida kan hämtas direkt från cachen - den cachade utgången skickas till applikationen. Detta förbättrar applikationens prestanda avsevärt. Följande kodavsnitt visar hur du kan implementera caching för sidutdata.

Alternativet VaryByParam hjälper dig att ange variablerna i Http-begäran som behöver en ny cache-post. Andra möjliga alternativ inkluderar: VaryByHeader och VaryByCustom. Du kan också ange plats och varaktighet i OutputCache-direktivet - du kan använda dessa för att ange platsen för cachen och även hur länge webbsidan ska cachas.

Sidfragmentcaching

Sidfragmentcachning är en cachestrategi där webbsidan cachas delvis - endast fragment av webbsidan cachas, inte hela webbsidan. Du kan använda samma syntax som sidoutmatningscaching. Du måste dock tillämpa OutputCache-attributet på en användarkontroll istället för webbsidan. Fragmentcaching är till hjälp när du bara behöver cache delar av din webbsida - vanligtvis i situationer där din webbsida innehåller en blandning av vanliga och dynamiska sektioner. Som ett exempel kan du ha en webbsida som innehåller en blandning av menyalternativ och även vissa dynamiska sektioner som ofta måste fyllas i och uppdateras från databasen.

Datacaching

ASP.Net exponerar Cache API för dig att lagra data i cachen för hämtning senare. Syntaxen för lagring av data i cachen med hjälp av Cache API ges nedan.

Cache["key"] = "value";

Du kan också använda metoderna Lägg till eller Infoga. För att avlägsna en post från cachen kan du använda metoden Ta bort () i klassen Cache. Metoden Insert () för Cache-klassen gör att du kan ange cacheberoende. Cacheberoende är en strategi som säkerställer att när data i datalagret (från vilket cacheminnet har fyllts i) ändras, kommer cacheminnet att fyllas i omedelbart. När data i datalagret ändras, kommer cachen att upphöra, vilket resulterar i att cacheminnet fylls på med de senaste uppgifterna. Du kan läsa mer om detta från denna MSDN-artikel.

Bästa praxis

Du bör cacha så ofta du kan och cacha data ordentligt i varje lager i din applikation. När du använder datacaching bör du implementera en korrekt strategi för att säkerställa att data i cachen är synkroniserade med den i datalagret. Du kan dra nytta av distribuerade cachechefer som Memcached så att din cachestrategi också kan skala bra och ge betydande prestationsvinster - du kan använda Memcached för att lagra stora data. Du bör se till att du bara cachar relativt inaktuella data - det finns ingen anledning att cacha data som skulle förändras ofta över tiden. Data som sannolikt inte kommer att återanvändas bör inte lagras i cachen. Du bör inte överanvända SqlDependency eller SqlCacheDependency.

Och nu, låt oss veta nackdelarna med cachning också. Cache-objektet är endast tillgängligt för den aktuella applikationsdomänen. Så om du vill lagra data i cachen och göra den tillgänglig över en webbgård är det inte en möjlighet. Du måste utnyttja distribuerad cache som Windows Server AppFabric Caching eller andra distribuerade caching-ramar för att ha data i cachen globalt tillgängliga i en webbgård.

Cachning är en kraftfull mekanism för att öka applikationens prestanda genom att lagra relativt inaktuella data i minnet så att samma kan hämtas från cacheminnet vid en senare tidpunkt. Jag kommer att diskutera mer om detta ämne med verkliga livsexempel i mina framtida inlägg här.