Önceki yazılarımda AJAX kontrollerini kullanarak geliştirdiğiniz ASP.NET uygulamalarında yapacağınız asenkron postbacklerde sayfanın sunucu tarafında sıfırdan üretildiğinden bahsetmiştim. WebMethod'larla AJAX Sayfalarını Daha da Hızlandırın başlıklı yazımın ilk paragrafını konunun kısa detayı için okuyabilirsiniz. Aynı makalede WebMethod’ları kullanarak AJAX uygulamalarında daha hızlı işlemler gerçekleştirileceğinden bahsetmiştim. Ancak uygulama içerisinde WebMethod’lar değil de UpdatePanel’lerle asenkron işlemleri gerçekleştiriyorsanız yine uygulamanızı hızlandırmak için önemli bir ipucu var. O da ScriptManager kontrolünün IsInAsyncPostBack özelliği(property). Adından da anlaşılacağı üzere yapılan talebin asenkron postback olup olmadığı bilgisini getiriyor. Özelliğin kullanımına örnek olması açısından şöyle bir kod parçası üzerinden gidelim:
protected void Page_Load(object sender, EventArgs e)
{
//Veritabanından son eklenen 40 haberi getir
//Haberlere yapılan son 10 yorumu getir
}
protected void Button1_Click(object sender, EventArgs e)
{
//Döviz bilgilerini getir. Bu kısım partial postbackte çalışacak
}
Bu şekilde hazırlanan bir sayfada Page_Load’da eriştiğiniz kontroller UpdatePanel’in içerisinde değilse ve UpdatePanel’in içeriğini Button1’e tıklamak güncelleyecekse yukarıda görmüş olduğunuz Page_Load metodundaki kodlar Button1’e her tıklandığında gereksiz yere çalışacaktır. Dikkat edeceğiniz üzere sadece Button1’e tıklanması yeterli değil, Page_Load’da yapılan işlemlerin de UpdatePanel içeriğiyle ilgili olmaması gerekiyor. Page_Load metodunu aşağıdaki şekilde düzenlediğinizde artık Button1 üzerinden gerçekleşen partial postback işlemlerinde sunucu tarafında daha az kod çalışacak ve sayfanın daha hızlı şekilde güncellenecektir.
protected void Page_Load(object sender, EventArgs e)
{
if (!scriptManager1.IsInAsyncPostBack)
{
//ScriptManager üzerinden asenkron işlem yapılmıyorsa;
//Veritabanından son eklenen 40 haberi getir
//Haberlere yapılan son 10 yorumu getir
}
}