Output Caching ile Performans Sağlama (Asp.Net MVC)

Output caching (Çıktı Önbellekleme) ‘den yararlanarak Asp.net MVC uygulama performansı nasıl arttırılabilir ?

Output caching, sayfamızın Html halinin ön bellekte bir kopyasını oluşturur ve kopyası oluşturulan sayfa istendiğinde ön belleğe atılan kopya sayfa gönderilir böylece her eylemde sayfayı yeniden oluşturmaz veya veritabanı bağlantısı kurmasına gerek kalmaz. Output caching’in bazı özellikleri ile sayfanın ne kadar ön bellekte tutulacağı veya belirli parametrelere göre caching yapılacağı söylenebilir.

MVC Output Caching Kullanımı

Oluşturduğunuz action’a [OutputCache] niteliğini ekleyerek OutputCache’i aktif hale getirebiliriz. Aşağıdaki örneğe söre Index çıktısını 10 saniyeliğine ön belleğe aldık.

using System.Web.Mvc;

namespace MvcApplication1.Controllers
{
    public class HomeController : Controller
    {
        [OutputCache(Duration=10, VaryByParam="none")]
        public ActionResult Index()
        {
            return View();
        }

    }
}

Önemli Not: Asp.net MVC’nin beta versiyonlarında, çıktı önbelleği için http://www.siteadresi.com gibi URL çalışmıyor. http://www.siteadresi.com/Home/Index şeklinde kullanılması gerekmektedir.

Yukarıdaki kod parçacığında görüldüğü gibi çıktı 10 saniyeliğine ön belleğe alınır.Çok daha uzun bir ön bellekleme süresi belirleyebilirsiniz. Süre belirtilmemiş ise bellek kaynağı azaldığında ön bellekleme temizlenir.

<%@ OutputCache %> Web form sayfalarında geçerlidir MVC uygulamada kullanılmamalıdır.

Çıktı Önbelleği Nerede Oluşturuluyor ?

[OutputCache] özelliğini kullandığımızda, içerik 3 farklı bölgede ön belleğe atılabilir. Bunlar web sunucu, proxy sunucular ve web tarayıcısı dır. [OutputCache] niteliğinin Location özelliğini düzenleyerek önbellek konumunu kontrol edebilirsiniz.

Aşağıdaki değerlerden birini Location özelliğine atayabilirsiniz.

  • Any
  • Client
  • Downstream
  • Server
  • None
  • ServerAndClient

Location özelliğin varsayılan olarak Any değeri atanmıştır.

Sadece tarayıcı veya sadece sunucu taraflı ön bellekleme yapmak isteyeceğiniz durumlar olacaktır.
Örneğin : Aşağıdaki GetName methodunu kullanan sayfayı bir kullanıcı çağırdığında “Selam Ahmet” geri dönecektir ve ön bellekleme yapılacaktır. Bir Location belirlenmediğinden bir başka kullanıcıda bu sayfayı çağırdığından kendi bilgisi yerine “Selam Ahmet” geri dönecektir. Çünkü Location özelliği tanımlanmadığından Web sunucuda ön bellekleme yapılmıştır.

using System.Web.Mvc;
using System.Web.UI;

namespace MvcApplication1.Controllers
{
    public class UserController : Controller
    {
        [OutputCache(Duration = 3600, VaryByParam = "none")]
        public string GetName()
        {
            return "Selam " + User.Identity.Name;
        }
    }
}

Yukarıdaki örneğe göre olması gereken OutputCacting niteliğine Location özelliğini tanımlamaktır. Bu GetName methodunda ön bellekleme yapılacak ise Location özelliği Client olarak ayarlanmalıdır.

using System.Web.Mvc;
using System.Web.UI;

namespace MvcApplication1.Controllers
{
    public class UserController : Controller
    {
        [OutputCache(Duration=3600, VaryByParam="none", Location=OutputCacheLocation.Client, NoStore=true)]
        public string GetName()
        {
            return "Selam " + User.Identity.Name;
        }
    }
}

Değişken Ön Bellek Çıktısı

Bazı durumlarda gelen parametreye göre sayfanın içeriği değişiyor olabilir. [OutputCache] niteliğine VaryByParam değerini ayarlayarak aynı sayfayı farklı parametrelere göre farklı farklı ön bellekleye bilirsiniz. Aşağıdaki örnekte aynı sayfayı id parametresine göre önbellekleme yapılmıştır.

using System.Web.Mvc;
using MvcApplication1.Models;

namespace MvcApplication1.Controllers
{
    public class PageController : Controller
    {
        [OutputCache(Duration = int.MaxValue, VaryByParam = "id")]
        public ActionResult Details(int id)
        {
            return View();
        }

    }
}

Web.config Üzerinde Önbellek Profili

[OutputCache] niteliği özelliklerini web.config’den kontrol edebilirsiniz. Web.config üzerinde profil oluşturmanın birkaç avantajı bulunmaktadır.

İlk olarak, web.config üzerinden yaptığınız yapılandırma ile ön bellekleme özelliklerini merkezi bir noktadan kontrol altına almış olursunuz.

İkinci olarak, uygulamanızı yeninden derlemeye gerek kalmadan ön bellekleme özelliklerinde değiklik yapabilirsiniz. Web.config dosyasındaki herhangi bir değişiklik otomatik olarak algılanır ve uygulanır.

Web.config Dosyasına Önbellek Profili Oluşturma



    
        
    


Oluşturduğumuz profili uygulamamızda aşağıdaki gibi kullanabiliriz.

using System;
using System.Web.Mvc;

namespace MvcApplication1.Controllers
{
    public class ProfileController : Controller
    {
        [OutputCache(CacheProfile="CacheProfile1")]
        public string Index()
        {
            return DateTime.Now.ToString("T");
        }
    }
}

Output Caching (Çıktı önbelleği) Asp.net MVC uygulamalarınızda performansını önemli ölçüde geliştirmek için çok kolay bir yöntemdir.

PaylaşShare on Facebook0Tweet about this on TwitterShare on Google+0Pin on Pinterest0Share on Tumblr0Share on LinkedIn0Email this to someone

Yazar Hakkında Yazarın Bütün Yazıları Yazarın Web Sitesi

Mertcan Kibar

Bir Cevap Yazın

Your email address will not be published. Required fields are marked *

*