陳東 施陽
摘要:隨著ASP.NET技術(shù)的不斷發(fā)展,其在企業(yè)網(wǎng)站性能的構(gòu)建中發(fā)揮著越來越重要的作用。企業(yè)網(wǎng)站的性能構(gòu)建和更新并健全是個(gè)長期的工作,筆者將對基于ASP.NET技術(shù)構(gòu)建的企業(yè)網(wǎng)站性能的幾個(gè)主要方面對如何實(shí)現(xiàn)企業(yè)網(wǎng)站的性能優(yōu)化進(jìn)行探討。
關(guān)鍵詞:緩存技術(shù);數(shù)據(jù)庫;用戶協(xié)議優(yōu)化
中圖分類號(hào);TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2017)07-0103-02
隨著ASP.NET技術(shù)的不斷發(fā)展,越來越多的企業(yè)選擇改進(jìn)傳統(tǒng)的.html類型網(wǎng)站,更多地選擇利用ASP.NET技術(shù)平臺(tái)和Visual studio.net語言開發(fā)企業(yè)網(wǎng)站。企業(yè)網(wǎng)站是企業(yè)面向社會(huì)和其他企業(yè)窗口,對展示企業(yè)文化、傳播企業(yè)精神內(nèi)涵、擴(kuò)大企業(yè)間交流有重要意義。因此,企業(yè)網(wǎng)站除了頁面上的美觀、內(nèi)容上的豐富度要求以外,為了實(shí)現(xiàn)企業(yè)間交流、展示企業(yè)文化內(nèi)涵等目標(biāo),相應(yīng)的對企業(yè)網(wǎng)站的性能提出了更高要求。其中包括:響應(yīng)時(shí)間、數(shù)據(jù)有效吞吐量、最大訪問量等性能需求。針對這些問題,本文從緩存、數(shù)據(jù)庫、用戶狀態(tài)等幾個(gè)主要性能方面進(jìn)行探討。
1緩存技術(shù)
何為緩存技術(shù)?緩存技術(shù)是在網(wǎng)絡(luò)時(shí)代背景下,廣泛用來提高計(jì)算機(jī)性能的一種技術(shù),其本質(zhì)上是將用戶訪問頻率較高的內(nèi)容或數(shù)據(jù)暫時(shí)通過內(nèi)存的方式存儲(chǔ)在個(gè)人設(shè)備中。由于ASP.NET會(huì)在用戶首次訪問某些數(shù)據(jù)時(shí)進(jìn)行自動(dòng)編譯,這些編譯數(shù)據(jù)將在服務(wù)器界面留下緩存,因此首次打開某些界面會(huì)出現(xiàn)讀取緩慢現(xiàn)象,這些現(xiàn)象在多次訪問后會(huì)有所改善,這是由于再訪問時(shí)這些數(shù)據(jù)并非逐一讀取,而是直接提取緩存的方式進(jìn)行訪問,這必將提高網(wǎng)站的讀取速度并能夠適當(dāng)增加網(wǎng)站的擴(kuò)展性能,響應(yīng)速度也會(huì)極大提高。緩存技術(shù)在現(xiàn)代網(wǎng)絡(luò)中被廣泛應(yīng)用也是這一原因,其對響應(yīng)速度的提升是不容小覷的。
如何實(shí)現(xiàn)緩存技術(shù)的優(yōu)化,將是如何提高基于ASP.NET企業(yè)網(wǎng)站訪問效率、響應(yīng)速度的關(guān)鍵。對此有以下幾種方法。
1)數(shù)據(jù)的分級(jí)釋放,由于首次訪問時(shí)訪問數(shù)據(jù)和緩存數(shù)據(jù)基本上是同期進(jìn)行,計(jì)算機(jī)的性能和執(zhí)行進(jìn)程的數(shù)量相關(guān),一般來說,進(jìn)程數(shù)目越多、進(jìn)程內(nèi)存越大,計(jì)算機(jī)所需要的響應(yīng)時(shí)間越長。因此我們可以將緩存方式進(jìn)行優(yōu)化,實(shí)現(xiàn)數(shù)據(jù)的分級(jí)釋放。
舉例來說:用戶首次訪問企業(yè)網(wǎng)站時(shí),數(shù)據(jù)開始釋放并進(jìn)行緩存,如果緩存服務(wù)器所有數(shù)據(jù)內(nèi)容,這項(xiàng)數(shù)據(jù)處理量將是極其龐大的,用GB計(jì)量甚至TB計(jì)量,即使不需將這些數(shù)據(jù)全部提取并打開,但是自動(dòng)緩存還是會(huì)進(jìn)行下去,這將占用大量的計(jì)算機(jī)和服務(wù)器性能,對訪問效率和響應(yīng)速度的影響極為明顯。將數(shù)據(jù)分級(jí)釋放能夠較好的避免這一問題,比如企業(yè)網(wǎng)站首頁和首頁直接導(dǎo)航鏈接為一級(jí)數(shù)據(jù),用戶在訪問時(shí)優(yōu)先緩存,次級(jí)鏈接的速度為二級(jí)數(shù)據(jù),在用戶瀏覽一級(jí)數(shù)據(jù)時(shí)緩慢緩存,在瀏覽信息的同時(shí)緩存次級(jí)數(shù)據(jù),能夠避免一次性緩存大量數(shù)據(jù)帶來的響應(yīng)速度緩慢的弊端,是企業(yè)網(wǎng)站性能優(yōu)化的一個(gè)重要方面。
2)頁面輸出優(yōu)化處理,經(jīng)常瀏覽網(wǎng)站的用戶應(yīng)該都知道,一個(gè)頁面上會(huì)有需要圖文信息和不需要圖文信息,有時(shí)已經(jīng)可以瀏覽到需要信息,但是網(wǎng)站還是在緩存不需要信息,訪問速度明顯受到干擾。企業(yè)網(wǎng)站優(yōu)化時(shí)可以通過@OutputCache指令實(shí)現(xiàn),通過增加用戶緩存控件,限制頁面輸出時(shí)間,例如%@OutputCache Duration=20 VaryByParam="None"%指令,限制頁面輸出時(shí)間,在20s內(nèi)進(jìn)行,20s內(nèi)無論是否緩存完全部數(shù)據(jù),強(qiáng)制頁面輸出,緩存工作可以放在瀏覽時(shí)再進(jìn)行等。
2數(shù)據(jù)庫
數(shù)據(jù)庫是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲(chǔ)和管理數(shù)據(jù)的地方,由于其像倉庫一樣的倉儲(chǔ)功能,我們稱之為數(shù)據(jù)庫。數(shù)據(jù)庫在某一網(wǎng)站中具有重要意義,網(wǎng)站每一個(gè)等級(jí)的頁面輸出數(shù)據(jù)幾乎全部存儲(chǔ)在服務(wù)器數(shù)據(jù)庫中。換句話說,就瀏覽網(wǎng)站時(shí)可見的信息:圖文、表格等幾乎全部是服務(wù)器數(shù)據(jù)庫的內(nèi)容物。數(shù)據(jù)庫的優(yōu)化,是對服務(wù)器信息、數(shù)據(jù)的整理,重點(diǎn)在于頁面輸出通道和數(shù)據(jù)庫提取通道之間的連結(jié)和優(yōu)化。
1)jE確使用連接池。連接池是將數(shù)據(jù)庫資源和頁面進(jìn)行連結(jié),連接池使顯示數(shù)據(jù)和請求訪問數(shù)據(jù)可以對號(hào)入座,使訪問更具效率、縮短響應(yīng)時(shí)間等。網(wǎng)絡(luò)黑客、木馬等病毒其工作原理就是通過修改、篡改、釣魚等方式干擾連結(jié)池,使用戶請求信息無法準(zhǔn)確傳達(dá)到服務(wù)器中心,從而使數(shù)據(jù)庫提取有誤的信息,強(qiáng)制使用戶瀏覽、閱讀。
ASP.NET中提供了有效的連接池,用來改善打開和關(guān)閉數(shù)據(jù)庫對服務(wù)器性能的占用,其能夠在收到請求信息后,直接從數(shù)據(jù)庫中提取有效信息,從而達(dá)到迅速響應(yīng)的結(jié)果。但是連接池有一個(gè)弊端,就是訪問數(shù)量有限,無法處理過于大量的請求和信息,因此正確使用連接池的關(guān)鍵在于處理好連接池的打開和關(guān)閉時(shí)間,收到用戶請求時(shí)迅速打開,使用完畢后或是長時(shí)間沒有請求信息時(shí)關(guān)閉,這些可以通過編程代碼實(shí)現(xiàn)。此外,必要情況下可以通過增加連接池?cái)?shù)目的方式,提高負(fù)載能力。
2)精心設(shè)計(jì)并使用存儲(chǔ)通道。網(wǎng)站的數(shù)據(jù)儲(chǔ)存過程是通過SQL語句編譯實(shí)現(xiàn),存儲(chǔ)過程是對服務(wù)器數(shù)據(jù)庫的即時(shí)訪問,信息處理速率也相應(yīng)較高。正確使用存儲(chǔ)通道可以有效避免對重復(fù)數(shù)據(jù)的多次編譯,有效降低服務(wù)器負(fù)載。并且存儲(chǔ)過程獨(dú)立于ASP.NET程序,修改也較為簡便,語句傳輸速度也較快。
3)優(yōu)化查詢語句。ASP.NET中建立ADO類型連接消耗的性能相當(dāng)巨大,并且隨著SQL語句運(yùn)行時(shí)間的正常,占用系統(tǒng)性能的時(shí)間也會(huì)相應(yīng)延長。因此在服務(wù)器構(gòu)建過程中,盡量避免在ASP.NET中使用SQL語句,盡量采用選擇運(yùn)算、網(wǎng)絡(luò)數(shù)據(jù)排列預(yù)處理等方式降低SQL語句使用頻率,能夠相應(yīng)地提高數(shù)據(jù)庫信息調(diào)取速率,對網(wǎng)站性能的優(yōu)化具有重要作用。
4)合理利用數(shù)據(jù)庫相關(guān)控件。舉例來說:Dataset類型控件適合用于數(shù)據(jù)庫的讀取和寫入操作,而.DataReader類型語句在只進(jìn)行數(shù)據(jù)庫讀取操作時(shí)更加使用等;根據(jù)語句特性,盡可能發(fā)揮各種語句在數(shù)據(jù)庫構(gòu)建中的優(yōu)勢,達(dá)到網(wǎng)站性能上的優(yōu)化。
3用戶協(xié)議優(yōu)化
網(wǎng)站的服務(wù)對象都可以稱之為用戶,包括社會(huì)的一般民眾的其他企業(yè),這是企業(yè)推銷自身、推廣自身文化內(nèi)涵的重要途徑。與用戶協(xié)議息息相關(guān)的幾個(gè)方面有:網(wǎng)站的個(gè)性化風(fēng)格、用戶權(quán)限、用戶狀態(tài)管理等。
3.1網(wǎng)站個(gè)性化風(fēng)格
網(wǎng)站個(gè)性化風(fēng)格是體現(xiàn)網(wǎng)絡(luò)平臺(tái)貼心設(shè)計(jì)的重要內(nèi)容,根據(jù)用戶端口的特性從服務(wù)器端對訪問用戶進(jìn)行的專門用戶狀態(tài)設(shè)計(jì),我們稱之為網(wǎng)站個(gè)性化風(fēng)格。在增加社會(huì)好感方面,網(wǎng)站的個(gè)性化風(fēng)格極其重要,這些需要通過ASP.NET語句和服務(wù)器SQL語句編譯實(shí)現(xiàn)。盡可能滿足各種用戶的需求或個(gè)人傾向,所謂“投其所好”。
3.2用戶權(quán)限
用戶在網(wǎng)站上進(jìn)行WEB會(huì)話需要涉及各種各樣的網(wǎng)絡(luò)權(quán)限,那么企業(yè)網(wǎng)站究竟在用戶訪問企業(yè)服務(wù)器時(shí)賦予多少用戶權(quán)限,這需要根據(jù)企業(yè)能夠開放的權(quán)限類型和數(shù)量來決定,不能在這里做一個(gè)通論。但是在用戶權(quán)限方面,只要處理好網(wǎng)站安全和用戶請求之間的關(guān)系就可以,在保證網(wǎng)絡(luò)完全和服務(wù)器性能的前提下,最大限度的權(quán)限開放都是合理的。
3.3用戶狀態(tài)管理
一般只要有會(huì)員、用戶機(jī)制的網(wǎng)站或論壇在登錄的時(shí)候都會(huì)有這么一個(gè)復(fù)選框——[記住我的名字|兩周內(nèi)不再登錄|在此計(jì)算機(jī)上保存我的信息],說法較多,但總體來說都差不多,這就是一種最簡單的用戶狀態(tài)登記和管理。
企業(yè)網(wǎng)站不同于論壇和社區(qū)網(wǎng)站之處在于企業(yè)網(wǎng)站可能存儲(chǔ)更多的行業(yè)內(nèi)部信息,這些信息有時(shí)會(huì)涉及企業(yè)商業(yè)機(jī)密或是與企業(yè)發(fā)展、規(guī)劃具有重要聯(lián)系,這些信息數(shù)據(jù)需要處于半公開狀態(tài),即公開但是又無法對所有訪問者進(jìn)行公開,這里雖然涉及用戶權(quán)限管理,但是更多地依賴于用戶狀態(tài)管理。
在ASP.NET中可以通過編寫Cookie的方式實(shí)現(xiàn):
控制Cookie的范圍
限制Cookie的域范圍
由于Cookie存儲(chǔ)在客戶端,不能直接修改和刪除Cookie
通過給Cookie賦新值替換舊版本Cookie的辦法來修改
可以通過設(shè)置Cookie立即過期的辦法來刪除Cookie
這樣可以根據(jù)用戶狀態(tài)來確認(rèn)用戶權(quán)限等級(jí),能有效處理好網(wǎng)站安全和網(wǎng)絡(luò)信息公開之間的問題,在企業(yè)網(wǎng)站優(yōu)化中能發(fā)揮重要作用。
4結(jié)束語
除了上述的幾種企業(yè)網(wǎng)站優(yōu)化途經(jīng)外,ASP.NET背景下企業(yè)網(wǎng)站還可以采用頁面控件(.aspx)、用戶控件(.asex)等控件進(jìn)行控制限制;網(wǎng)站程序分層:用戶界面、業(yè)務(wù)邏輯界面、數(shù)據(jù)訪問界面等結(jié)構(gòu)建立等方式進(jìn)行企業(yè)網(wǎng)站優(yōu)化設(shè)計(jì)。
宗旨,企業(yè)網(wǎng)站性能的優(yōu)化是一個(gè)長期的工作,需要企業(yè)網(wǎng)絡(luò)工程人員在細(xì)致的工作之余,總結(jié)實(shí)踐經(jīng)驗(yàn),不斷修補(bǔ)和更新才能完成的長期工程,這點(diǎn)是毋庸置疑的。