Programmering

Bedste fremgangsmåder i caching i ASP.Net

Caching er en statsstyringsstrategi, der ofte vedtages i ASP.Net for at forbedre applikationens ydeevne ved at minimere forbruget af ressourcer i dit system. Hvis det bruges korrekt, kan det forbedre ydeevnen for din applikation betydeligt ved at gemme wWb-siden helt eller delvist eller endda gemme applikationens data på tværs af HTTP-anmodninger. Caching gør det muligt at gengive websiden hurtigere, og korrekt brug af caching minimerer eller reducerer databasetreff eller forbrug af serverens ressourcer.

Cache i ASP.Net er af følgende tre typer:

  1. side-output-cache
  2. sidefragment caching
  3. data caching

Sideoutput caching

Dette er en form for caching i ASP.Net, der gemmer en kopi af din webside i hukommelsescachen, så efterfølgende anmodninger om den samme webside kan hentes direkte fra cachen - cachelagret output sendes til applikationen. Dette forbedrer applikationens ydeevne betydeligt. Følgende kodestykke viser, hvordan du kan implementere sideoutput caching.

Indstillingen VaryByParam hjælper dig med at specificere variablerne i Http-anmodning, der har brug for en ny cacheindgang. Andre mulige muligheder inkluderer: VaryByHeader og VaryByCustom. Du kan også angive placering og varighed i OutputCache-direktivet - du kan bruge disse til at specificere placeringen af ​​cachen og også varigheden, hvor websiden skal caches.

Sidefragment caching

Sidefragment caching er en cachestrategi, hvor websiden delvist caches - kun fragmenter af websiden caches, ikke hele websiden. Du kan bruge den samme syntaks som cachelagring af sideoutput. Du skal dog anvende OutputCache-attributten på en brugerkontrol i stedet for websiden. Fragmentcaching er nyttigt, når du kun skal cache dele af din webside - typisk i situationer, hvor din webside indeholder en blanding af almindelige og dynamiske sektioner. Som et eksempel kan du have en webside, der indeholder en blanding af menupunkter og også visse dynamiske sektioner, der ofte skal udfyldes og opdateres fra databasen.

Datacaching

ASP.Net udsætter Cache API for dig at gemme data i cachen til hentning senere. Syntaksen til lagring af data i cachen ved hjælp af Cache API er angivet nedenfor.

Cache ["key"] = "værdi";

Du kan også bruge metoderne Tilføj eller Indsæt. For at fjerne en post fra cachen kan du bruge metoden Fjern () i Cache-klassen. Metoden Insert () i Cache-klassen giver dig mulighed for at specificere cacheafhængighed. Cacheafhængighed er en strategi, der sikrer, at når dataene i datalageret (hvorfra cachen er blevet udfyldt) ændres, vil cachen derefter genudfyldes med det samme. Når data i datalageret ændres, udløber cachen, hvilket resulterer i en genudfyldning af cachen med de nyeste data. Du kan læse mere om dette fra denne MSDN-artikel.

Bedste praksis

Du skal cache så ofte som muligt og cache data ordentligt i hvert lag i din applikation. Når du bruger datacaching, skal du implementere en korrekt strategi for at sikre, at data i cachen er synkroniseret med dem i datalageret. Du kan drage fordel af distribuerede cache-ledere som Memcached, så din cachestrategi også kan skaleres godt og give betydelige præstationsgevinster - du kan bruge Memcached til at gemme store data. Du skal sikre dig, at du kun cache relativt uaktuelle data - der er ikke noget punkt i at cache data, der ofte vil ændre sig over tid. Data, der sandsynligvis ikke vil blive genbrugt, bør ikke lagres i cachen. Du bør ikke overbruge SqlDependency eller SqlCacheDependency.

Og lad os også kende ulemperne ved caching. Cache-objektet er kun tilgængeligt for det aktuelle applikationsdomæne. Så hvis du gerne vil gemme data i cachen og gøre dem tilgængelige på tværs af en webfarm, er det ikke en mulighed. Du bliver nødt til at udnytte distribueret cache som Windows Server AppFabric Caching eller andre distribuerede caching-rammer for at få dataene i cachen globalt tilgængelige i en webgård.

Caching er en kraftfuld mekanisme til at øge applikationens ydeevne ved at gemme relativt uaktuelle data i hukommelsen, så det samme kan hentes fra cachehukommelsen på et senere tidspunkt. Jeg diskuterer mere om dette emne med eksempler på virkelige livskoder i mine fremtidige indlæg her.