韓富朝
【摘 要】Web 管理信息系統(tǒng)能有效克服傳統(tǒng)管理信息系統(tǒng)的不足,應(yīng)用越來越廣泛。但由于其高度信賴服務(wù)端運行和網(wǎng)絡(luò)傳輸,影響程序運行效率。開發(fā)高性能的 Web 管理信息系統(tǒng),需要程序從頁面優(yōu)化、狀態(tài)管理、數(shù)據(jù)訪問等方面進行優(yōu)化設(shè)計。
【關(guān)鍵詞】Web 服務(wù);管理信息系統(tǒng);優(yōu)化
Web應(yīng)用程序高度依賴服務(wù)器,在大量用戶同時訪問時容易造成服務(wù)器負載過大而延遲響應(yīng)的情況,再加上互聯(lián)網(wǎng)固有的時延,很容易形成用戶長時間等待響應(yīng)的情況,影響了用戶體驗。因此,優(yōu)化系統(tǒng)性能,縮短響應(yīng)時間是開發(fā)Web管理信息系統(tǒng)時要重點考慮的因素。除了采用高性能的硬件設(shè)備、負載均衡、數(shù)據(jù)庫優(yōu)化等方法外,程序設(shè)計的優(yōu)化也是重要的方面。文中主要討論基于ASP.NET和SQL Server 的管理信息系統(tǒng)程序設(shè)計優(yōu)化。
1.頁面優(yōu)化
1.1避免不必要的回發(fā)
有些情況不必要執(zhí)行回發(fā),比如,管理信息系統(tǒng)中常見的信息錄入,某個輸入框只允許輸入數(shù)字,就可以采用 Javascript等腳本語言在客戶端進行格式檢查,而不必要回發(fā)到服務(wù)器進行檢查。通常,如果不需要將信息傳遞到服務(wù)器以進行驗證或?qū)⑵鋵懭霐?shù)據(jù)存儲區(qū),要避免使用導(dǎo)致回發(fā)的代碼,以提高網(wǎng)頁的性能并改善用戶體驗。如果開發(fā)自定義服務(wù)器控件,可以通過讓它們?yōu)橹С諩CMAScript(JavaScript) 的瀏覽器呈現(xiàn)客戶端代碼。通過這種方式使用服務(wù)器控件,能顯著減少信息被發(fā)送到Web服務(wù)器的次數(shù)。
如果必須執(zhí)行回發(fā)操作,使用Page對象的IsPostBack屬性來避免回發(fā)時執(zhí)行不必要的重復(fù)執(zhí)行。對于僅在首次請求頁面時執(zhí)行,而不是每次回發(fā)時都執(zhí)行的代碼,應(yīng)當通過判斷頁面的IsPostBack屬性,確保只在第一次加載頁面時執(zhí)行。
1.2按需使用視圖狀態(tài)
視圖狀態(tài)使得服務(wù)器控件可以在往返行程中保存控件的狀態(tài),而不需要編寫任何代碼。但是,因為視圖狀態(tài)是加密保存在窗體的隱藏字段中的,頁面提交時同樣會被提交到服務(wù)器并在處理完成后發(fā)送到客戶端瀏覽器,所以該功能增加了頁面的大小,降低了服務(wù)器處理的速度,因此應(yīng)當只在必要的時候才保存視圖狀態(tài)。如果頁面不需要向服務(wù)器回發(fā)或頁面服務(wù)器控件的數(shù)據(jù)在經(jīng)歷服務(wù)器的往返行程后值會發(fā)生變化,保存視圖狀態(tài)也就失去了意義。在這種情況下,應(yīng)當禁用視圖狀態(tài)。默認情況下,ASP.NET為所有服務(wù)器控件啟用視圖狀態(tài)。若要禁用它,將控件的EnableViewState屬性設(shè)置為false,如
1.3優(yōu)選重定向方法
ASP.NET提供了超鏈接、跨頁發(fā)送、瀏覽器重定向和服務(wù)器傳輸 4種在網(wǎng)頁中生成重定向的方式。每種重定向提供的功能不同,適用的時機也不同。超鏈接由 HTML標簽實現(xiàn)對目標頁的請求,但不能將當前頁的信息傳遞到目標頁。跨頁發(fā)送是將當前頁信息發(fā)送到目標頁。瀏覽器重定向是通過在服務(wù)器端編程方式強制瀏覽器向目標頁發(fā)出新的請求。服務(wù)器傳輸是將控件傳輸?shù)皆谠错撐恢贸尸F(xiàn)的新頁中,不會用目標頁的相關(guān)信息來更新瀏覽器信息。在不同的ASP.NET頁之間重定向,如果不需要讀取源頁信息,應(yīng)當優(yōu)先采用超鏈接,如果需要讀取源頁信息,應(yīng)當使用跨頁發(fā)送或服務(wù)器傳輸?shù)姆绞?,如果是重定向到另一個Web應(yīng)用程序,則只能使用跨頁發(fā)送。只有在需要編程控制重定向的目標頁的情況下才應(yīng)當考慮采用瀏覽器重定向的方式。
2.狀態(tài)管理
2.1按需使用會話狀態(tài)
會話狀態(tài)為保存特定用戶信息提供了方便,但也增加了服務(wù)器開銷,應(yīng)該在不需要時禁用。方法是在頁的@Page指令中將 EnableSessionState屬性 設(shè)置為 false,如 <%@ PageEnableSessionState=" false"%>。果頁需要訪問會話變量,但不會創(chuàng)建或修改,則應(yīng)將 EnableSessionState 的屬性設(shè)置為ReadOnly。如果整個應(yīng)用程序都不用保存會話狀態(tài),則可以禁用整個應(yīng)用程序的會話狀態(tài),方法是在應(yīng)用程序的Web.config文件的SessionState節(jié)中將 Mode屬性設(shè)置為Off,如
2.2選擇合適的會話狀態(tài)模式
如果必須保存會話狀態(tài),應(yīng)針對應(yīng)用程序的需要,選擇適當?shù)臅挔顟B(tài)模式。ASP.NET 提供了多種保存會話狀態(tài)的模式: 進程內(nèi)模式、狀態(tài)服務(wù)器模式、SQL Server 模式和自定義模式。進程內(nèi)會話狀態(tài)速度最快,如果只在會話狀態(tài)中存儲少量易失數(shù)據(jù)時應(yīng)當采用這樣模式。只有在需要跨多個處理器(或多個計算機) 或者在服務(wù)器 (或進程) 重新啟動時保存會話狀態(tài)的情況下才考慮使用其他的模式。
3.Web 應(yīng)用程序部署
3.1使用預(yù)編譯
網(wǎng)站預(yù)編譯后,部署服務(wù)器就可以不需要源代碼,而且可縮短用戶的初始響應(yīng)時間,因為頁在第一次被請求時無需編譯。編譯時可以選擇預(yù)編譯代碼和.aspx頁,或者僅預(yù)編譯代碼。如果只預(yù)編譯代碼,則無需重新編譯整個站點就可以更新用戶界面。如果預(yù)編譯代碼和.aspx 頁則有利于保護知識產(chǎn)權(quán),因為即便別人取得網(wǎng)站文件也無法直接修改和使用。
3.2 禁用調(diào)試模式
在部署應(yīng)用程序或進行任何性能測量之前,應(yīng)當禁用調(diào)試模式。如果啟用了調(diào)試模式,應(yīng)用程序的性能會受到影響。
3.3優(yōu)化配置文件
默認情況下,ASP.NET配置文件被設(shè)置成啟用最廣泛的功能集并盡量適應(yīng)最常見的情況??筛哪承┠J配置以提高應(yīng)用程序的性能。首先,僅對需要的應(yīng)用程序啟用身份驗證。
ASP.NET 應(yīng)用程序默認的身份驗證模式為Windows或集成的NTLM。大多數(shù)情況下,最好僅對需要身份驗證的應(yīng)用程序在Machine.config 文件中禁用身份驗證,在Web.config 文件中啟用身份驗證。其次,使用適當?shù)木幋a格式。ASP.NET 默認的編碼格式為 UTF-8。如果應(yīng)用程序不需要廣泛的支持,可以考慮采用其他編碼以提高性能。最后,從請求處理管線中移除不用的模塊。默認情況下,服務(wù)器計算機的Machine.config文件中HttpModules節(jié)點的所有功能均保留為活動狀態(tài) 。對于不用的模塊,應(yīng)當予以刪除。比如,如果應(yīng)用程序中不使用會話狀態(tài)和輸出緩存,就可以從HttpModules節(jié)中將它們刪除。
4.結(jié)語
程序運行性能是影響ASP.NET程序速度運行的重要因素。良好的程序設(shè)計是開發(fā)高性能Web管理信息系統(tǒng)的基礎(chǔ)。通過頁面設(shè)計、狀態(tài)管理、數(shù)據(jù)訪問、Web應(yīng)用程序部署方面的優(yōu)化設(shè)計,能有效提高程序運行效率。 [科]
【參考文獻】
[1]周博文,杜山澤.社會管理創(chuàng)新:從倫理觀念、管理理念到思維方式的轉(zhuǎn)變.載于.行政管理改革,2012(11).
[2]徐懷平.優(yōu)化Oracle查詢性能[J].電腦編程技巧與維護,2012,(12):39-49.