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));

Reklamlar

Kasım 24, 2011 - Posted by | ASP.NET | , , , , ,

Henüz yorum yapılmamış.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s