摘要:轉貼訪客 "艾傑斯" 的留言
以下是訪客 "艾傑斯" 於本 Blog 的留言, 為了完整呈現, 特轉貼於此:
其 實使用 AJAX 只是讓網頁程式在最後的呈現階段,與原本的 ASP.NET 不同之外,其他的一切都還是維持 ASP.NET 既有的運作流程,因此 AJAX 的回傳還是一定會引發通知事件,比方說, Load、PreRender,當然也是要處理 Viewstate 資訊,然後引發狀態變更並回傳事件,比方說,TextChanged 和 Click。
既然 AJAX 沒有改變 ASP.NET 既有的運作模式,對於 ASP.NET 網頁應用程式是個老問題的 Viewstate 大小,寄望透過 AJAX 來解決無疑是緣木求魚。根本的解決之道,還是要避免無謂的 Viewstate,以便加快下載時間。比方說,用 AJAX Control Toolkit 裡的月曆擴充器(CalendarExtender)來取代 ASP.NET 的 Calendar 控制項。由於 Calendar 是一個大量使用 HTML 標記的控制項,採用預設的 Calendar 樣式,大概需要 7K 左右的資料大小,一般來說,大都會將 Calendar 控制項予以美化,如此一來,資料量可能就會高達 10K 了。如果停用該控制項的 Viewstate,頂多也不過節省 1K 的資料量。 在改用月曆擴充器之後,就可以省掉 10K 的資料。
章老師在研討會及書中都有 強調,只有要被更新的東西才放在 UpdatePanel 裡,並透過 UpdatePanel 的 UpdateMode = "Conditional" 、 AsyncPostBackTrigger ... 等技巧來減少要回傳的資料量。這邊有一份統計圖表,它說明善用 UpdatePanel 最佳化技巧,一定會比 ASP.NET 有效的減少封包大小。