ViewState’in gereksiz kullanımı

ViewState, web kontrollerinin HTTP istekleri sırasında içeriklerinin sunucuya postalanması bittiği anda HTML çıktısına eklenen veri kümesidir. Sayfa kaynağına baktığınızda;

<input type=”hidden” name=”__VIEWSTATE” id=”__VIEWSTATE” value=””>

benzeri bir çıktı görürsünüz, bazen bu sayfalarca olabilmektedir.

ViewState özelliği aktif olan web kontollerinin bulunduğu bir form herhangi bir şekilde yeniden yüklenmesi sağlansa bile kontollerin içeriği değişmeyecektir. Halbuki klasik yöntemlerle sunucudan gelen çıktıda bu tür bir eklenti olmamaktadır. ViewState’in gereksiz yere aktif halde kalması büyük bir performans kaybına sebeb olacaktır.

Çünkü web formu sunucuya postalandıktan sonra web kontrollerinin ve web formlarının içeriği ViewState’teki bilgilere göre yeniden yüklenir ve işlemler bundan sonra devam eder. Ayrıca ViewState bilgileri DatGrid gibi içerisinde çok fazla veri bulunduran web kontrolleri ile birlikte çok fazla şişecektir. ViewState verisine ihtiyacımız yokken bu verilerin sunucuda oluşmasını sağlamak gereksiz veri trafiği yaratcağı için bu durumlarda kontrolün yada web formunun ViewState özelliğini pasif hale getirmeliyiz.

Bütün Web kontrollerinin bool türünden EnableViewState adında bir özelliği bulunmaktadır. Bu özelliği false yaparak ViewState bilgisinin ilgili kontrol için oluşmamasını engelleyebiliriz. Eğer ViewState özelliğini bütün form için pasif konuma getirmek istiyorsak web formunun Page direktifinden sonra aşağıdaki gibi kullanım mevcuttur.

<@Page EnableViewState = “false”@> 

Yavaşlığından şüphelendiğim bazı sayfalar için viewstate in açık kaldığını, kaynak sayfasında sayfalarca viewstate çıktısı olduğunu ve kapattığımda ise hissedilir şekilde hızlandığını test edebildim. Eğer gerekli değilse kapatmanızı öneririm.