Koray Kırdinli

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

ASP.NET Önbellekleme III (Programatic Caching)

Bazen sayfa üzerinde yaptığımız cache’lemenin fonksiyonelitisi yetmeyebilir ve cache’leme mekanizmamızı kodun içinden yönetmek isteyebiliriz. Kod tarafında cache’lemenin sayfa tarafındaki cach’leme ile bağı çok fazla olmasa da kod içinden bazı değerlere müdahale edebiliriz.

■  Response.Cache.setExpires  : Sayfanın ne kadar saniye cache’leneceğini söyler.
■  Response.Cache.setCacheability  : Bir enum değeri ister ; HttpCacheability . HttpCacheability.Public (Client veServer’da caching enable olur) ,  HttpCacheability.Server (Sadece Server’da caching enable olur).
■  Response.Cache.setvalidUntilExpires : true olduğu zaman sayfanın cache’lenmesi için bir süre verilmiş ise bu süre soruna kadar cache’leme expire olmaz.

Bazı sayfalar cache’leme için uygun değildir çünkü bazı kontrollerin dinamik olarak üretilmesi gerekebilir. Bütün dinamik oluşan kontroller için ayrı ayrı cache policy’ler uygulamak yerine substitution’ları kullanabiliriz. Asp.net 2 yöntem içerir.

■  Response.Writesubstitution  metodu :
■  Substitution control :

Bazen belli event’lere göre cache’i bozma ihtiyacı duyabiliriz. Örneğin bir sql sorgusu sonucuna göre.
Bunu yapabilmek için ASP.NET bir çok yöntem sunar. HttpValidationStatus ile bir sayfanın yeni mi generate edildiği yoksa cache’den mi alındığı bulunabilir.
HttpValidationStatus.Invalid : Bu sayfanın cache’inin bozulmasına ve tekrardan dinamik olarak generate edilmesine sebep olur.
HttpValidationStatus.IgnoreThisRequest :  Mevcut sayfanın bir önceki cache’lenmiş versiyonu bozulmadan yeniden generate edilmesini sağlar.
HttpValidationStatus.Valid : Cache’lenmiş sayfayı getirmesini sağlar.

Output Dependency

Response.AddCacheDependency : Cache’lenmiş response Cache Dependency nesnesine bağımlıdır.
Response.AddCacheItemDependency ve Response.AddCacheItemDependencies : Cache’lenmiş response bir veya daha çok nesneye bağımlıdır.
Response.AddFileDependency and Response.AddFileDependencies :  Cache’lenmiş response bir veya daha çok dosyaya bağımlıdır.

Buraya kadar her bir user control,sayfa,nesne üzerinden önbellekleme yapabileceğimiz gördük ve son olarak da bütün cache’leme işlemlerini web.config üzerinden merkezileştirebiliriz. Aşağıdaki örnek sadece server tarafında bir önbelleklemeyi 1 dk süre ile yapar ve browser tiplerine göre de farklı versiyonlarını tutar.

<outputCacheSettings>
  <outputCacheProfiles>
    <add name="ServerOnly" 
      duration="60" 
      varyByCustom="browser" 
      location="Server" />
  </outputCacheProfiles>
</outputCacheSettings>

November 30, 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