Använd HttpContext.Current.Items som cache

Det är vanligt att man behöver hämta samma data fler gånger på en webbsida. Om datat man vill komma åt ligger i databasen blir det otroligt kostsamt att hämta detta. Då kan man placera informationen i sessionen exempelvis. Nackdelen med det är att informationen som hämtas kanske är sidspecifik och inte behövs mer.

Då kan det vara lämpligt att använda sig av HttpContext.Current.Items som är en hashtable där man kan lagra information som bara finns tillgänglig under den aktuella requesten.

Såhär kan det se ut i kod för att hämta ett objekt.

SomeObject myObject = (SomeObject) HttpContext.Current.Items["SomeObject"];
if (myObject == null){
  // fyll objektet från databasen
}

Om en distribuerad cache (scaleout stateserver, ncache, velocity eller liknande) används så kan det vara en fördel att för de objekt som hämtas flera gånger per sida använda sig av även HttpContext.Current.Items för att lagra datat. Detta trots att man redan har en cachelösning. Det beror på att en distribuerad cache går utanför den aktuella kontexten, exempelvis till en cacheserver, och på grund av det blir det kostsamt. Normalt behöver de distribuerade cachelösningarna också serialisera/deserialisera objekten varje gång de hämtas. Det finns dock vissa distribuerade cachelösningar som kompletterar den befintliga cachelösningen med en asp.net cache som därför är snabbare.

Kommentarer inaktiverade.

%d bloggare gillar detta: