Basit bi forum sitesi düşünelim sağda bir menü olsun ve son açılan 50 adet konuyu orada listelemek isteyelim. Şimdi bu menu bütün sayfalarda olacağı için bu menüyu oluşturma işlemini bir child action a yaptırıyorum. Menünun yer alacağı view a gidiyorum. @ Burdan child action ı çağırıyorum. Child actionım da aşağıdaki gibi public ActionResult GetMenu Child Action ı cagırdımız satırdaki versiyonNumarasi na atadığımız versiyonDeğerini, public static bi değişkenden yada httpruntime. cache gibi bütün kullanıcıların erişebileceği bir yerde sakladığımızı düşünelim. Bir kullanıcı siteye girince versiyonu sakladığımız static değişkene bakacak ve o değişken i parametre olarak GetMenu isimli childaction a yollayacak. Eğerki birisi yeni konu açarsa versiyonu 1 artıracak. Artık versiyon herkes için 1 artmış olacak çünkü statik bi yerde. Ve yapılacak yeni isteklerde VaryByParam="versiyonNumarasi" dediğimiz içinde hemen child action method yeniden çağrılacak ve yeni cache oluşturulacak. Sorular: 1-) Cache süresine duration 600 dedik 10 dakika yani. Son 2 dakikada 15 tane konu acılsa versiyonNumber 1 den baslasa 15 e kadar gelse. İlk 14 cache hala saklanıyor olacak. Bütün kullanıcılar menüyü çekerken 15 numarayı kullansada yinede ilk 14 ün lmesi için her cache in ayrı ayrı duration 600 ü doldurması gerekecek değil mi? Bu nceki cacheleri güvenli olarak nasıl silebiliriz? 2-) Bir de outputCache ın nostore parametresi ile biz client a sana gnderdiğim verileri bi yerde saklama demiş olmuyor muyuz? http://www.asp.net/mvc/overview/older-versions-1/controllers-and-routing/improving-performance-with-output-caching-cs bu linkte Listing 4 te location client denmıs ve nostore = true bu kısmında anlamadım. Verdiğim rnek ve yaklaşım doğru mudur? Fikirlerinizi ve bilgilerinizi paylaşırsanız sevinirim.

Yani diyorsunki hocam cache in süresini 20-30 saniye falanda yapabilirm. Doğrumu anladım acaba? 20-30 saniye değil her saniye sorgu gitse yinede yorulmaz server diyosun sanırım. Aynen yle, maksat her requestte db ye gitmemek, çünkü yeri geldiğinde anlık binlerce request atılabilir ya da bir tool yazılıp siteye flood yapılabilir, bu gibi durumlarda binlerce kez db ye gitmemiş olmak yeterli. Ben genelde çok spesifik olmayan işlerde db sorgulayan actionlara cache süresini 1sn den fazla vermem. Ehl-i Byte

Bu tarz bir kullanımda cache süresini 1sn gibi kısa bir süreden daha fazla yapmanın hiç bir getirisi olmayacaktır, hele ki cache datanın değişimini hesaplayıp update etme işine girmek tamamen gereksiz olur. Süre 1sn bile olsa, clienttan gelen her request için (belki sn de 1000 request gelen büyük bir proje?) db ye gidilmemiş olunacak, her saniye başı db ye gidilmiş olunacak, db server saniye başı sorgu ile yorulmayacaktır nemli olan da bu. Ehl-i Byte

Yani diyorsunki hocam cache in süresini 20-30 saniye falanda yapabilirm. Doğrumu anladım acaba? 20-30 saniye değil her saniye sorgu gitse yinede yorulmaz server diyosun sanırım.