如何讓網(wǎng)站擁有好的性能
網(wǎng)站的性能關(guān)乎用戶訪問體驗(yàn),讓網(wǎng)站支撐更多用戶,讓每個(gè)用戶的等待時(shí)間更短是我們的目標(biāo)。性能的提高靠的是數(shù)據(jù)庫(kù)優(yōu)化,高效率的 HTML 代碼渲染以及內(nèi)容緩存。
對(duì)數(shù)據(jù)庫(kù)進(jìn)行優(yōu)化設(shè)計(jì)
合理使用Index,使用高效SQL語句,減少數(shù)據(jù)庫(kù)表的全表掃描,只返回必要的數(shù)據(jù),這些都是非常有效的數(shù)據(jù)庫(kù)優(yōu)化方式,數(shù)據(jù)庫(kù)往往是一個(gè)網(wǎng)站的性能瓶頸,您需要對(duì)數(shù)據(jù)庫(kù)進(jìn)行持續(xù)地優(yōu)化,每一點(diǎn)微不足道的性能提高,累積起來都會(huì)帶來質(zhì)的改變。
使用StoreProcedure進(jìn)行數(shù)據(jù)庫(kù)和網(wǎng)站業(yè)務(wù)層的數(shù)據(jù)交流
存儲(chǔ)過程(StoreProcedure)的執(zhí)行效率遠(yuǎn)遠(yuǎn)高于分散的SQL語句。只要您的數(shù)據(jù)庫(kù)支持StoreProcedure您就應(yīng)當(dāng)使用它作為網(wǎng)站業(yè)務(wù)邏輯端和數(shù)據(jù)庫(kù)端的數(shù)據(jù)交流通道。
分頁(yè)返回?cái)?shù)據(jù)庫(kù)中的記錄,不使用業(yè)務(wù)層的分頁(yè)
在返回大量數(shù)據(jù)記錄的時(shí)候,應(yīng)該使用分頁(yè)機(jī)制逐頁(yè)顯示這些數(shù)據(jù),您需要在數(shù)據(jù)庫(kù)端分頁(yè),在業(yè)務(wù)層分頁(yè)將導(dǎo)致大量重復(fù)數(shù)據(jù)來往于數(shù)據(jù)層和業(yè)務(wù)層之間,造成性能瓶頸。
使用成熟優(yōu)化的Web頁(yè)面渲染技術(shù)
ASP.NET,PHP,JSP,Ruby以及CGI都可以充當(dāng)網(wǎng)站表現(xiàn)層的HTML渲染引擎,您可以根據(jù)自己的需求選擇合適的平臺(tái)。需要注意的是,諸如ASP.NET一類的平臺(tái),為了滿足絕大多數(shù)應(yīng)用場(chǎng)合并盡可能降低用戶代碼量,使用了很多可能降低性能的技術(shù),如ViewState,您可以關(guān)閉這些功能以提高頁(yè)面渲染和執(zhí)行效率。事實(shí)上,我們?cè)贑omsharpCMS使用了DirectRender方式,拋開ASP.NET的頁(yè)面生命周期模型,直接渲染HTML代碼生成網(wǎng)頁(yè),獲得了非常理想的性能。
使用XHTML+ExternalCSS+ExternalJavascript降低Http請(qǐng)求
您應(yīng)當(dāng)將頁(yè)面的內(nèi)容,修飾,行為分開,內(nèi)容為純粹的XHTML,修飾為外部CSS文件,行為為外部Javascript文件,這種模型的好處是,瀏覽器可以對(duì)外部CSS和Javascript進(jìn)行緩存,每次只需從服務(wù)器端請(qǐng)求XHTML內(nèi)容,大大降低頁(yè)面的請(qǐng)求尺寸,對(duì)性能的改善有很大的幫助。