Koray Kırdinli

Yazılım ve İş Yaşamı Hakkında Paylaşımlar

ASP.NET Önbellekleme I (Application Caching)

Önbellekleme web sayfalarının sıkça erişeceği sayfanın tamamının veya belli bir datanın bellekte tutulmasıdır. Peki bunu neden yapıyoruz tabiî ki performans için. Bir datanın bellekten okunması veritabanından veya sabit diskten

okunmasından çok daha hızlıdır. Yalnız belleğe alınacak datanın iyi optimize edilmesi gerekir belleği şişirmemek için.

   ASP.NET’de 2 türlü caching metodu vardır.

– Application Caching(Data Caching) : Session gibi kullanılırlar, bir keyi vardır ve bu key ile bellekte saklanırlar. Null ontrolü yapılarak kullanılmaları daha iyi olur. Eğer değeri null ise cache boşalmış veya hiç atanmamış diyebiliriz.

if(Cache[“Key”]!=null) Cache[“Key”] = “Value”;

 Genellikle cache’de statik bir string değer tutulmaz,cache’de genellikle bir dosya,bir veritabanı sorgusu sonucu veya
elde edilmesi zor bir data cache’lenir. Kendi oluşturduğumuz bir tipi cache’leyebilmek için o sınıfın Serializable olması gerekir aksi datayı halde tekrar eski haline getiremeyiz.

Normal cache’e veri atama dışında insert metodu ile de bellekleme
yapabiliriz.Cache.Insert metodu işimize yarayacak bir sürü parametre barındırır.

key : cache nesnesinin anahtar kelimesi.

value : cache’e atadığımız değer.

dependencies : Bağımlılığı belirtir. Örneğin buraya bir dosyayı bağımlı yapar ve cache’e insert edersek daha sonra
dosya değiştirildiği zaman cache’de boşalır.

absoluteExpiration : Bu bir DateTime nesnesidir ve cache’in ne zaman boşalacağını belirtir. Bunu kullanmak istemez
iseniz  System.Web.Caching.Cache.NoAbsoluteExpiration ‘a set edilebilir.

slidingExpiration : Bu bir TimeSpan nesnesidir ve ne kadar süre sonra cache’in boşalacağını belirtir. Kullanmak istemez iseniz System.Web.Caching.Cache.NoSlidingExpiration olarak set edilebilir.

Priority : Cache’de hangi nesnelerin önce çıkarılacağını belirtir. High priority olanlar cache’den en önce çıkartılır.

onRemoveCallback : Cache’in boşaldığı anda tetiklenen bir handler’dır.

//Cache Dependency : a.txt dosyası değişince cache boşalır.
if (Cache[“Key”!= null) Cache[“Key”= “Value”;

Cache.Insert(“FileCache”,File.ReadAllText(“a.txt”),new System.Web.Caching.CacheDependency(Server.MapPath(“a.txt”)));

//Bir cache nesnesine birden fazla bağımlılık da tanımlanabilir.
System.Web.Caching.CacheDependency dep1 = new System.Web.Caching.CacheDependency(Server.MapPath(“1.txt”));
string[] keyDependencies = {“CacheItem1”};


System.Web.Caching.CacheDependency
dep2 = new System.Web.Caching.CacheDependency(null,keyDependencies);

System.Web.Caching.AggregateCacheDependency aggDep = new System.Web.Caching.AggregateCacheDependency();
aggDep.Add(dep1);
aggDep.Add(dep2);
Cache.Insert(“FileCache”,File.ReadAllText(“a.txt”),new System.Web.Caching.CacheDependency(Server.MapPath(“a.txt”)));

//Bir cache nesnesine absolute Expiration tanımlamak için: Bu durumda cache’e data atıldıktan 10 dk sonra kendiliğinden boşalır.


Cache.Insert(“FileCache”,“CacheContents”, null, DateTime.Now.AddMinutes(10), System.Web.Caching.Cache.NoSlidingExpiration);


//Eğer sık kullanılan nesneleri daha uzun süre cache’de tutmak istiyorsanız
sliding expiration kullanılmalı.



//Bu durumda en son gelen istekten sonra 10 dk
nesne cache’de tutulur.

Cache.Insert(“FileCache”,“CacheContents”, null,System.Web.Caching.Cache.NoAbsoluteExpiration,
new TimeSpan(0,10, 0));

November 24, 2011 - Posted by | ASP.NET | , , , , ,

No comments yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s