20 Mayıs 2013 Pazartesi

Asp.Net Generic Handler Sayfa Ön Bellekleme İşlemi

Merhaba arkadaşlar asp.net sayfalarımızda Generic Handler Üzerinde sayfa ön bellekleme yapacağız.

Ön bellekleme nedir diye kısaca bir açıklama yapmak gerekirse asp.net içinde yazdığımız kodlar her seferinde bir işlem yaparlar ve geriye bir çıktı döndürürler.Ama biz bazen bu çıktıların her seferinde oluşturulmamasını isteyebiliriz.Örnek olarak http://localhost/urundetay.ashx?urunid=123 gibi bir sayfa için bu sayfayı 3 saat kadar ön bellekte tutabiliriz sebebi ise zaten ürün içeriğimiz bu 3 saat içerisinde değişmeyecek.Bizde bu içerik için sunucuyu sql serverimizi yormamış olacağız. urunid parametresine göre sayfamızı server tarafında önbellekleyeceğiz.

Not: Sayfa çıktısını ön bellekleme konusunda daha ayrıntılı bir yazı yazacağım.

Aşağıdaki kodumuzda sayfamızı urunid parametresine göre önbellekledik süresini Duration ile arttırabilir.

Örnek Çalışma şekli ise http://localhost/outputlu.ashx?urunid=1
şeklindedir geriye bir tarih döndürecek siz sayfayı yenileseniz dahi ya duration süresi bitmeli yada siz urunid yi değiştirmelisiniz.


Code:
public class outputlu : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            OutputCachedPage page = new OutputCachedPage(new OutputCacheParameters
            {
                //sayfamizin bekleme süresi
                Duration = 60,
                //sayfamız hangi tarafta tutulacak
                Location = OutputCacheLocation.Server,
                //hangi parametreye göre sayfamız belleklenecek
                VaryByParam = "urunid"
            });
            page.ProcessRequest(HttpContext.Current);
            context.Response.Write(DateTime.Now);
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
    sealed class OutputCachedPage : Page
    {
        private OutputCacheParameters _cacheSettings;

        public OutputCachedPage(OutputCacheParameters cacheSettings)
        {
            // benzersiz sayfa kimliğimiz
            ID = Guid.NewGuid().ToString();
            _cacheSettings = cacheSettings;
        }

        protected override void FrameworkInitialize()
        {
            base.FrameworkInitialize();
            InitOutputCache(_cacheSettings);
        }
    }


Hiç yorum yok:

Yorum Gönder