ASP實用技巧28則

來源:互聯網
上載者:User
技巧 改進效能和樣式的 25+ ASP 技巧
-------------------------------
Len Cardinal - Microsoft Consulting Services 進階顧問
George V. Reilly - Microsoft IIS Performance 主管
更新時間:2000年4月
根據 Nancy Cluts 的文章(英文)改寫
Nancy Cluts - 開發人員技術工程師
Microsoft Corporation

摘要:本文提供了最佳化 ASP 應用程式和 VBScript 的技巧。

目錄

簡介

技巧 1:在 Web 服務器上緩衝常用資料

技巧 2:在 Application 或 Session 對象中緩衝常用資料

技巧 3:在 Web 服務器磁碟上快取資料和 HTML

技巧 4:避免在 Application 或 Session 對象中緩衝非靈活組件

技巧 5:不要在 Application 或 Session 對象中快取資料庫串連

技巧 6:妙用 Session 對象

技巧 7:在 COM 物件中封裝代碼

技巧 8:晚點擷取資源,早點釋放資源

技巧 9:進程外的執行將犧牲可靠性

技巧 10:顯式使用選項

技巧 11:在子常式和函數中使用局部變數

技巧 12:將常用資料複製到指令碼變數

技巧 13:避免重新定義數組

技巧 14:使用響應緩衝

技巧 15:批處理內嵌指令碼和 Response.Write 語句

技巧 16:在開始長時間的任務之前先使用 Response.IsClientConnected

技巧 17:使用 <OBJECT> 標記執行個體化對象

技巧 18:使用 ADO 對象和其他組件的 TypeLib 綁定

技巧 19:利用瀏覽器的驗證能力

技巧 20:在迴圈中避免字串串聯

技巧 21:啟用瀏覽器和代理緩衝

技巧 22:儘可能使用 Server.Transfer 替代 Response.Redirect

技巧 23:在目錄 URL 尾部加斜線

技巧 24:避免使用伺服器變數

技巧 25:升級為最新的和最好的版本

技巧 26:調整 Web 服務器

技巧 27:進行效能測試

技巧 28:讀取資源連結




簡介

效能是一個特性。您需要預先設計效能,或是在日後重新編寫應用程式。換句話說,什麼是最大限度最佳化 Active Server Pages (ASP) 應用程式效能的好策略?

本文為最佳化 ASP 應用程式和“Visual Basic(R) 指令碼編輯器 (VBScript)”提供了許多技巧。對許多陷阱和缺陷進行了討論。本文所列的建議均在 http://www.microsoft.com 及其他網站上進行了測試,而且工作正常。本文假定您對 ASP 開發有基本的理解,包括對 VBScript 和/或 JScript、ASP Application、ASP Session 和其他 ASP 內部對象(請求、響應和伺服器)。

ASP 的效能,通常不止取決於 ASP 代碼本身。我們並不想在一篇文章中囊括所有的至理名言,只在最後列出與效能相關的資源。這些連結包括 ASP 和非 ASP 主題,包括“ActiveX(R) 資料對象 (ADO)”、“組件物件模型 (COM)”、資料庫和“Internet 資訊服務器 (IIS)”配置。這些是我們喜歡的連結 - 務請關注它們。

技巧 1:在 Web 服務器上緩衝常用資料

典型的 ASP 頁從後端資料庫檢索資料,然後將結果轉換為超文字標記語言 (HTML) (HTML)。無論資料庫的速度如何,從記憶體檢索資料要比從後端資料庫檢索資料快得多。從本地硬碟讀取資料通常也要比從資料庫檢索資料快得多。因此,通常可以通過在 Web 服務器(在記憶體或磁碟)上快取資料來改善效能。

緩衝是典型的空間與時間的折衷。如果恰當地快取資料,您將看到效能會有驚人的提高。為使緩衝發揮效力,它必須保持經常重用的資料,而且重新計算這些資料的代價是昂貴的或比較昂貴的。如果緩衝充滿了垃圾資料,則是對儲存空間的浪費。

不經常變化的資料也是緩衝的候選資料,因為您無須擔心資料與資料庫的同步問題。組合框、參考資料表、DHTML 片段、可延伸標記語言 (XML) (XML) 字串、功能表項目和網站組態變數(包括資料來源名稱 (DSN)、網際網路通訊協定 (IP) (IP) 地址和 Web 路徑)都是緩衝的候選資料。注意,您可以快取資料的表示而不是資料本身。如果 ASP 頁不經常更改,而且緩衝的成本也非常高(例如,整個產品目錄),請考慮預先產生 HTML,而不是在每次請求時重新繪製。

資料應緩衝在何處,有哪些緩衝策略?資料經常緩衝在 Web 服務器記憶體或 Web 服務器磁碟上。下面兩個技巧討論這些選項。

技巧 2:在 Application 或 Session 對象中緩衝常用資料

ASP Application 和 Session 對象為在記憶體中快取資料提供了方便的容器。既可以將資料賦予 Application 對象,也可將資料賦予 Session 對象,這些資料在 HTTP 調用中將保留在記憶體中。Session 資料按使用者儲存,而 Application 資料在所有使用者間共用。

何時將資料載入 Application 或 Session?通常,在 Application 或 Session 啟動時載入資料。要在 Application 或 Session 啟動時載入資料,請在下面兩函數中添加相應的代碼:Application_OnStart() 或 Session_OnStart()。這兩個函數應該位於 Global.asa;如果沒有,可以添加這些函數。也可以在第一次需要資料時載入資料。要進行上述操作,請在 ASP 頁中添加一些代碼(或編寫可重用的指令碼函數),這些代碼檢查資料是否存在,並在資料不存在時載入資料。這是稱為遲緩計算的經典效能技術的例子 - 在您的確需要它之前,不進行計算。請看例子:

<%
Function GetEmploymentStatusList
Dim d
d = Application("EmploymentStatusList")
If d = "" Then
' FetchEmploymentStatusList 函數(不顯示)
' 從 DB 中取出資料,返回數組
d = FetchEmploymentStatusList()
Application("EmploymentStatusList") = d
End If
GetEmploymentStatusList = d
End Function
%>

可以為每一塊所需的資料編寫類似的函數。

資料應該以什麼格式儲存?任何變數類型均可儲存,因為所有指令碼變數是各不相同的。例如,可以儲存字串、整型或數組。通常,您將以這些變數類型之一儲存 ADO 記錄集的內容。若要擷取 ADO 記錄集衍生的資料,可以手工將資料複製到 VBScript 變數中,每次一個欄位。使用一個 ADO 記錄集保留函數 GetRows()、GetString() 或 Save() (ADO 2.5),會更快更簡便。完整而詳細的內容已超出了本文的範圍。下面的示範函數使用了 GetRows() 來返回記錄集資料的數組:

' 取記錄集,以數組返回
Function FetchEmploymentStatusList
Dim rs
Set rs = CreateObject("ADODB.Recordset")
rs.Open "select StatusName, StatusID from EmployeeStatus", _
"dsn=employees;uid=sa;pwd=;"
FetchEmploymentStatusList = rs.GetRows() ' 以數組返回資料
rs.Close
Set rs = Nothing
End Function

對上面樣本的進一步改進應當是緩衝該列表的 HTML,而不是緩衝數組。下面是一個簡單的範例:

' 取記錄集,以“HTML 選項”列表返回
Function FetchEmploymentStatusList
Dim rs, fldName, s
Set rs = CreateObject("ADODB.Recordset")
rs.Open "select StatusName, StatusID from EmployeeStatus", _
"dsn=employees;uid=sa;pwd=;"
s = "<select name=""EmploymentStatus">" & vbCrLf
Set fldName = rs.Fields("StatusName") ' ADO 欄位綁定
Do Until rs.EOF
' 下



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.