Extensible Output Caching
25.12.2009 02:47
Önbellekleme, uygulamanın performansı ve kullanıcılara daha çabuk cevap verebilmesi açısından ASP.NET’in ilk sürümünden itibaren kullanılabilen bir özelliktir. Önbellekmele için kullanılan depolama araçları InPoc, StateServer, SQL Server idi. In Proc ve StateServer opsiyonları Server’ın RAM’ini meşgul ettiklerinden üzerlerinde çalıştıkları diğer uygulamaların performanslarına etki edebiliyorlar. SQL Server seçeneğinde ise yüksek ağ trafiği oluşmasına sebebiyet verebilir. ASP.NET 4.0 beraberinde gelen Genişletilmiş Önbellekleme özelliği ile depolama araçlarını kişiselleştirme şansına sahip oluyoruz. Bu bir diskte olabilir, bulut bilişimi altında herhangi bir depolama aracıda. Bunun için bir web.config ayar örneği :
<caching>
<outputCache defaultProvider="AspNetInternalProvider">
<providers>
<add name="DiskCache"
type="Test.OutputCacheEx.DiskOutputCacheProvider, DiskCacheProvider"/>
</providers>
</outputCache>
</caching>
Bu özelliği kullanırken site üzerinde her önbelleklenecek içeriği için farklı depolama araçları kullanabilmekte mümkün. Bunu UserControl tanımlama satırında belirtebiliriz.
<%@ OutputCache Duration="60" VaryByParam="None" providerName="DiskCache" %>
Yada Global.asax dosyasında GetOutputCacheProviderName isimli fonksiyonu ezerek ( override) gelen isteğe göre hangi depolama aracının kullanılabileceğini belirtmemiz de mümkün.
public override string GetOutputCacheProviderName(HttpContext context)
{
if (context.Request.Path.EndsWith("Advanced.aspx"))
return "DiskCache";
else
return base.GetOutputCacheProviderName(context);
}
Daha detaylı bir anlatım ve uygulamalı örnek için Burak Selim Şenyur'tun Asp.Net 4.0 - Özelleştirilmiş Cache Sağlayıcısı(Custom Cache Provider) [Beta 2] isimli makalesine göz atmanızı ısrarla tavsiye ederim.
Bu yazı 274 kere okundu.



