Önbelleğe alma ve sıkıştırma işlemleri, büyük ölçekli web uygulamaları için çok önemlidir.

Önbelleğe alma ( Caching )

Bir web uygulamasının çıktısını belirli bir süre önbellekte tutma işlemi, o süre boyunca aynı URL ile gelen isteklerin tarayıcıda tutularak kullanıcıya iletilmesi esasına dayanır. Aşağıda bulunan Action Filter ile Asp.Net MVC projelerinizde önbelleğe alma işlemini gerçekleştirebilirsiniz.

public class CacheAttribute : ActionFilterAttribute

{

    public int Duration

    {

        get;

        set;

    }

    public CacheAttribute()

    {

        Duration = 10;

    }

    public override void OnActionExecuting(ActionExecutingContext filterContext)

    {

        if (Duration <= 0) return;

        HttpCachePolicyBase cache = filterContext.HttpContext.Response.Cache;

        TimeSpan cacheDuration = TimeSpan.FromSeconds(Duration);

        cache.SetCacheability(HttpCacheability.Public);

        cache.SetExpires(DateTime.Now.Add(cacheDuration));

        cache.SetMaxAge(cacheDuration);

        cache.AppendCacheExtension("must-revalidate, proxy-revalidate");

    }

}

Bu filtreyi aşağıdaki şekilde kolayca istediğiniz metotlara uygulayabilirsiniz.

   [Cache(Duration = 60)]

   public ActionResult Index(string query)

 

Ön belleğe alma işleminden önce;

 

Ön belleğe alma işleminden sonra;

 

Sıkıştırma ( Compression )

Modern tarayıcıların çoğu sıkıştırılmış veriyi işleme özelliğine sahiptir. Aşağıda bulunan Action Filter ile projelerinizde sıkıştırma işlemini gerçekleştirebilirsiniz.

public class CompressAttribute : ActionFilterAttribute

{

    public override void OnActionExecuting(ActionExecutingContext filterContext)

    {

        HttpRequestBase request = filterContext.HttpContext.Request;

        string acceptEncoding = request.Headers["Accept-Encoding"];

        if (string.IsNullOrEmpty(acceptEncoding)) return;

        acceptEncoding = acceptEncoding.ToUpperInvariant();

        HttpResponseBase response = filterContext.HttpContext.Response;

        if (acceptEncoding.Contains("GZIP"))

        {

            response.AppendHeader("Content-encoding", "gzip");

            response.Filter = new

            GZipStream(response.Filter, CompressionMode.Compress);

        }

        else if (acceptEncoding.Contains("DEFLATE"))

        {

            response.AppendHeader("Content-encoding", "deflate");

            response.Filter = new

            DeflateStream(response.Filter, CompressionMode.Compress);

        }

    }

}

Bu filtreyi aşağıdaki şekilde kolayca istediğiniz metotlara uygulayabilirsiniz.

   [Compress]

   public ActionResult Index(string query)

 

Sıkıştırma işleminden önce;

Sıkıştırma işleminden sonra;

 

Kaynak Kodu: indirmek için tıklayınız.

Kaynak: kazimanzurrashid.com

Bunlar da İlginizi Çekebilir!

HTML5 ile ilgili 7 Efsane ve Gerçek
Opera Evangelisti Bruce Lawson'ın da dediği gibi "Herkes HTML5 hakkında konuşuyor". Geliştiriciler, her HTML elemanının üzerinde yuvarlak köşeler ve Gradientlerden ibaret sınırlı değişikliklerle kullanmaya başladı bu teknolojiyi... Aslında bir çok insan, HTML5 dediğimiz teknoloji yerine eski moda DHTML veya AJAX teknolojilerini kullanmaktadır. Bu karışıklığın içinde bir çok eksik bilgi bulunmakta...
Asp.Net MVC & formToWizard & qTip Entegrasyonu
Geniş alan kaplayan formlarınızın adım adım doldurulmasını sağlayan jquery eklentisi FormToWizard ile qTip ve Jquery Validation eklentilerinin entegrasyonuyla Asp.Net MVC'de kullanışlı formlar oluşturabilirsiniz...
İstanbul'dan bir Google Chrome DevFest Geçti!
Google Türkiye'nin yazılım geliştiricilere yönelik olarak düzenlemiş olduğu Google Chrome DevFest İstanbul etkinliği, yüksek sayıda katılımcıyla başarılı bir ilke imza attı...

"Asp.Net MVC Action Filter İle Önbelleğe Alma ve Sıkıştırma İşlemleri" Konusuna 1 Yorum Yapıldı

  1. Gravatar
    27.12.2011 16:52:14
    Bülent ERDEM diyor ki :

    Çok iyi bir çalışma elinize sağlık...

Yorum Yap

Veri gönderiliyor...