11. OutputCache

OutputCache (önbellekleme) bazen actionmetoddan dönen değerlerin önbellekten okunmasını ve sunucuda tekrar tekrar işlem yapılmamasını isteyebilirsiniz. Bunu bir senaryo üzerinden daha açıklayıcı hale getirelim. Notlarınızı görmek üzere okulunuzun websitesine girdiğinizi varsayalım ve not sayfasına girdiniz. Notlar hala açıklanmamış sabırsızsınız ve tekrar sayfayı güncellediniz. İşte bu anda tekrar karşınıza gelen veriler güncel veriler değil Cache’den gelen verilerdir. Yazılımı yazan kişinin ayarladığı süreye kadar her güncellemenizde karşınıza gelen veriler sunucudan değil cacheten gelir. Bunu uyguladığımız yer genelde verinin sürekli değil de belli aralıklarla değişeceğı uygulamalar olmalıdır. Örneğin bir borsa uygulamasında verilerin sürekli değişmesi söz konusu olduğundan  ve bu kritik bir öneme sahip olduğundan outputcache uygulamak son derece mantıksız olacaktır.

public ActionResult SaatGoster()
{
  ViewBag.Saat = string.Format("{a:dd.mm.yyyy HH:mm:ss]",DateTime.Now);

return View( );
}

Boş bir View ekleyin. Ve view’a saat bilgisini yazin.

<h1>  @ViewBag.Saat </h1>

Sayfaya saat bilgisi gelecektir. Ve her yenileme işleminde sayfadaki saniye sayısı değişecektir. Her seferinde server tarafına bir istek(request) gitmekte ve public ActionResult SaatGoster() metodu çalışmakta ve bir response dönmektedir.

Aşağıdaki gibi [OutputCache(Duration = 60)] attribute’ını ekleyelim. Buradaki 60 saniye cinsindendir. Burada demek istediğimiz ilk istekten sonraki 60 saniye boyunca bana dönüşü serverdan değil de cache’den gönder. Sayfayı tekrar çalıştırdığınızda güncellediğiniz zaman 60 saniye boyunca bir değişiklik olmadığını göreceksiniz. 60 saniye sonraki güncellemede güncel bilgiler gelecektir. Bundan sonraki 60 saniyede tekrar bilgiler cacheten gelecektir.

[OutputCache(Duration = 60)]
public ActionResult SaatGoster()
{
  ViewBag.Saat = string.Format("{a:dd.mm.yyyy HH:mm:ss]",DateTime.Now);

 return View( );
}