微軟建議的ASP效能優化28條守則

2021-04-08 19:07:37 字數 3111 閱讀 4382

內容有點多,大家要有耐心哦!·

技巧 8:遲一點獲得資源,早一點釋放資源

這裡是乙個小技巧供您參考。一般來說,最好遲一點獲得資源,早一點釋放資源。這適用於 com 物件以及檔案控制代碼和其它資源。

這種優化方 法主要用於 ado 連線和記錄集。當您使用完記錄集,比方說在顯示乙個表及其資料之後,應立即釋放它,而不是等到頁面結束時再釋放。將 vbscript 變數設定為 nothing 是最好的做法。不要讓記錄集超出作用域之外。而且,要釋放任何相關的 command 或 connection 物件(在將記錄集或連線設定為 = nothing 之前,不要忘記呼叫 close())。這會縮短資料庫必須為您準備資源的時間,並盡快釋放資料庫到連線池的連線。

技巧 9:程序外執行過程以效能換取可靠性

asp 和 mts/com+ 兩者都有配置選項,可使您兼顧可靠性和效能。當建立和部署應用程式時,應知道如何兼顧兩者的效能。

asp 選項

可以配置 asp 應用程式,以便以三種方法之一執行。在 iis 5.0 中,引入了「隔離級」這一術語以說明這些選項。這三個隔離級分別是低階、中級和高階:

低階隔離。這在 iis 的所有版本中都得到支援,且是最快的。它在 inetinfo.exe 中執行 asp,inetinfo.exe 是主要 iis 程序。如果 asp 應用程式崩潰,iis 也會崩潰。(要在 iis 4.0 下重新啟動 iis,web 站點管理員應使用諸如 inetmon 之類的工具監視站點,如果伺服器發生故障,應啟用批處理檔案以重新啟動伺服器。iis 5.0 引入了可靠的重新啟動,該方法可使發生故障的伺服器自動重新啟動。)

中級隔離。iis 5.0 引入了這個新的級別,它被稱為程序外級別,因為 asp 在 iis 程序之外執行。在中級隔離中,被配置作為中級隔離執行的所有 asp 應用程式都共享乙個程序空間。這就減少了在一台伺服器執行多個程序外 asp 應用程式所需要的程序數量。中級隔離是 iis 5.0 中的預設隔離級別。

高階隔離。在 iis 4.0 和 iis 5.0 中支援這一級別,高階隔離也是程序外的。如果 asp 崩潰,web 伺服器並不會崩潰。下次 asp 請求時,asp 應用程式就會自動重新啟動。在高階隔離中,配置作為高階隔離執行的每個 asp 應用程式都在其自有程序空間中執行。這樣做可保護 asp 應用程式彼此之間不相互干擾。其缺點是它要求每個 asp 應用程式都要有乙個單獨的程序。當在一台伺服器上必須執行許多應用程式時,系統開銷就會大大增加。

哪個選項最好的呢?在 iis 4.0 中,程序外執行將顯著降低效能。在 iis 5.0 中,做了許多改進,將程序外執行 asp 應用程式所產生的開銷降到最低限度。事實上,在絕大多數測試中,iis 5.0 中的 asp 程序外應用程式比 iis 4.0 中的程序內應用程式執行得更快。不管怎樣,在兩個平台上,程序內(低隔離級)效能最佳。但是,如果訪問率相對較低或最大吞吐量較低,低隔離級的優勢不太明 顯。因此,在您每一 web 伺服器每秒鐘需要數百或成千上萬頁面時,才會覺得有必要設定低隔離級。與往常一樣,應對多種配置進行測試,確定您要採取哪一種折衷方案。

注意 當您執行 asp 程序外應用程式時(中級或高階隔離),它們在 nt4 中的 mts 和在 windows 2000 中的 com+ 中執行。即,在 nt4 中它們在 mtx.exe 中執行;而在 windows 2000 中,它們在 dllhost.exe 中執行。您可以在任務管理器中看到這些程序在執行。您還可以看到 iis 如何為程序外 asp 應用程式配置 mts 程式包或 com+ 應用程式。

com 選項

com 元件也有三種配置選項,雖然與 asp 選項不完全類似。com 元件可以是「未配置的」、配置為庫應用程式或配置為伺服器應用程式。「未配置的」意思是指元件沒有註冊 com+。元件將在呼叫程式的程序空間執行,那就是說,它們是「程序內的」。庫應用程式也是程序內的,但使用 com+ 的服務,包括安全、事務和上下文支援。伺服器應用程式被配置為在它們自有的程序空間內執行。

您可以看到未配置的元件比庫應用程式 略有一些優勢。庫應用程式比伺服器應用程式的效能優點更大。這是因為庫應用程式與 asp 在同一程序內執行,而伺服器應用程式在它們的自有程序內執行。程序間的呼叫比程序內呼叫開銷更大。而且,當在程序之間傳遞諸如記錄集之類的資料時,必須在 兩個程序之間複製所有的資料。

陷阱!當使用 com 伺服器應用程式時,如果您在 asp 和 com 之間傳遞物件,要確保物件執行「按值匯集」或 mbv。執行 mbv 的物件將它們自己從乙個程序複製到另乙個程序。這比下面一種方法好,採用這種方法時,物件仍在建立者的程序中,另外乙個程序反覆地呼叫建立程序以使用該對 象。切斷連線的 ado 記錄集將「按值匯集」,連線的記錄集則不然。scripting.dictionary 不執行 mbv,且不在程序之間傳遞。最後,vb 程式設計師請注意:mbv 不通過傳遞引數 byval 獲得。mbv 由原始的元件作者執行。

怎麼辦?

如果讓我們建議乙個兼顧效能與可靠性的合理配置,它們應是如下的配置:

在 iis 4.0 中,使用 asp 低隔離級別,使用 mts 伺服器程式包。

在 iis 5.0 上,使用 asp 的中隔離級,並使用 com+ 庫應用程式。

這些是非常一般的原則,主機服務公司一般情況下以中或高隔離級執行 asp,而單用途的 web 伺服器可以以低隔離級執行。衡量各種利弊,並自己決定哪個配置更能符合您的需要。

<%

next

while not rs.eof

%>

<% for each fld in rs.fields %>

<% = fld.value %>

<% next

<% rs.movenext

wend %>

下面的**更有效,每一行對響應流有一次寫操作。所有的**都包含在乙個 vbscript 塊內:

<%

for each fld in rs.fields

response.write (?? & fld.name & ?? & vbcrlf)

next

while not rs.eof

response.write (??)

for each fld in rs.fields %>

response.write(?? & fld.value & ?? & vbcrlf)

next

response.write ??

wend

%>

微軟建議的ASP效能優化28條守則

next while not rs.eof for each fld in rs.fields fld.value next rs.movenext wend 下面的 更有效,每一行對響應流有一次寫操作。所有的 都包含在乙個 vbscript 塊內 for each fld in rs.fields...

微軟建議的ASP效能優化28條守則

next while not rs.eof for each fld in rs.fields fld.value next rs.movenext wend 下面的 更有效,每一行對響應流有一次寫操作。所有的 都包含在乙個 vbscript 塊內 for each fld in rs.fields...

微軟建議的ASP效能優化28條守則1

目錄技巧1 將經常使用的資料快取在 web 伺服器上技巧2 將經常使用的資料快取在 或session 物件中技巧 3 將資料和 html 快取在web 伺服器的磁碟上技巧4 避免將非敏捷的元件快取在 或session 物件中技巧 5 不要將資料庫連線快取在 或session 物件中技巧 6 合理地使...