狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频

當(dāng)前位置:系統(tǒng)之家 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

二108條改善 ASP 性能與外觀的技巧(8-14)

二108條改善 ASP 性能與外觀的技巧(8-14)

更新時間:2019-06-28 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

技巧 8:遲一點獲得資源,早一點釋放資源
技巧 9:進程外執(zhí)行過程以性能換取可靠性
技巧 10:使用顯式選項
技巧 11:在子例程和函數(shù)中使用局部變量
技巧 12:將經(jīng)常使用的數(shù)據(jù)復(fù)制到腳本變量中
技巧 13:避免重新確定數(shù)組的維數(shù)
技巧 14:使用響應(yīng)緩沖

技巧 8:遲一點獲得資源,早一點釋放資源
這里是一個小技巧供您參考。一般來說,最好遲一點獲得資源,早一點釋放資源。這適用于 COM 對象以及文件句柄和其它資源。

這種優(yōu)化方法主要用于 ADO 連接和記錄集。當(dāng)您使用完記錄集,比方說在顯示一個表及其數(shù)據(jù)之后,應(yīng)立即釋放它,而不是等到頁面結(jié)束時再釋放。將 VBScript 變量設(shè)置為 Nothing 是最好的做法。不要讓記錄集超出作用域之外。而且,要釋放任何相關(guān)的 Command 或 Connection 對象(在將記錄集或連接設(shè)置為 = Nothing 之前,不要忘記調(diào)用 Close())。這會縮短數(shù)據(jù)庫必須為您準(zhǔn)備資源的時間,并盡快釋放數(shù)據(jù)庫到連接池的連接。

技巧 9:進程外執(zhí)行過程以性能換取可靠性
ASP 和 MTS/COM+ 兩者都有配置選項,可使您兼顧可靠性和性能。當(dāng)建立和部署應(yīng)用程序時,應(yīng)知道如何兼顧兩者的性能。

ASP 選項
可以配置 ASP 應(yīng)用程序,以便以三種方法之一運行。在 IIS 5.0 中,引入了“隔離級”這一術(shù)語以說明這些選項。這三個隔離級分別是低級、中級和高級:

低級隔離。這在 IIS 的所有版本中都得到支持,且是最快的。它在 Inetinfo.exe 中運行 ASP,Inetinfo.exe 是主要 IIS 進程。如果 ASP 應(yīng)用程序崩潰,IIS 也會崩潰。(要在 IIS 4.0 下重新啟動 IIS,Web 站點管理員應(yīng)使用諸如 InetMon 之類的工具監(jiān)視站點,如果服務(wù)器發(fā)生故障,應(yīng)啟用批處理文件以重新啟動服務(wù)器。IIS 5.0 引入了可靠的重新啟動,該方法可使發(fā)生故障的服務(wù)器自動重新啟動。)
中級隔離。IIS 5.0 引入了這個新的級別,它被稱為進程外級別,因為 ASP 在 IIS 進程之外運行。在中級隔離中,被配置作為中級隔離運行的所有 ASP 應(yīng)用程序都共享一個進程空間。這就減少了在一臺服務(wù)器運行多個進程外 ASP 應(yīng)用程序所需要的進程數(shù)量。中級 隔離是 IIS 5.0 中的默認(rèn)隔離級別。
高級隔離。在 IIS 4.0 和 IIS 5.0 中支持這一級別,高級隔離也是進程外的。如果 ASP 崩潰,Web 服務(wù)器并不會崩潰。下次 ASP 請求時,ASP 應(yīng)用程序就會自動重新啟動。在高級隔離中,配置作為 高級隔離運行的每個 ASP 應(yīng)用程序都在其自有進程空間中運行。這樣做可保護 ASP 應(yīng)用程序彼此之間不相互干擾。其缺點是它要求每個 ASP 應(yīng)用程序都要有一個單獨的進程。當(dāng)在一臺服務(wù)器上必須運行許多應(yīng)用程序時,系統(tǒng)開銷就會大大增加。
哪個選項最好的呢?在 IIS 4.0 中,進程外運行將顯著降低性能。在 IIS 5.0 中,做了許多改進,將進程外運行 ASP 應(yīng)用程序所產(chǎn)生的開銷降到最低限度。事實上,在絕大多數(shù)測試中,IIS 5.0 中的 ASP 進程外應(yīng)用程序比 IIS 4.0 中的進程內(nèi)應(yīng)用程序運行得更快。不管怎樣,在兩個平臺上,進程內(nèi)(低隔離級)性能最佳。但是,如果訪問率相對較低或最大吞吐量較低,低隔離級的優(yōu)勢不太明顯。因此,在您每一 Web 服務(wù)器每秒鐘需要數(shù)百或成千上萬頁面時,才會覺得有必要設(shè)置低隔離級。與往常一樣,應(yīng)對多種配置進行測試,確定您要采取哪一種折衷方案。

注意 當(dāng)您運行 ASP 進程外應(yīng)用程序時(中級或高級隔離),它們在 NT4 中的 MTS 和在 Windows 2000 中的 COM+ 中運行。即,在 NT4 中它們在 Mtx.exe 中運行;而在 Windows 2000 中,它們在 DllHost.exe 中運行。您可以在任務(wù)管理器中看到這些進程在運行。您還可以看到 IIS 如何為進程外 ASP 應(yīng)用程序配置 MTS 程序包或 COM+ 應(yīng)用程序。

COM 選項
COM 組件也有三種配置選項,雖然與 ASP 選項不完全類似。COM 組件可以是“未配置的”、配置為庫應(yīng)用程序或配置為服務(wù)器應(yīng)用程序。“未配置的”意思是指組件沒有注冊 COM+。組件將在調(diào)用程序的進程空間運行,那就是說,它們是“進程內(nèi)的”。庫應(yīng)用程序也是進程內(nèi)的,但使用 COM+ 的服務(wù),包括安全、事務(wù)和上下文支持。服務(wù)器應(yīng)用程序被配置為在它們自有的進程空間內(nèi)運行。

您可以看到未配置的組件比庫應(yīng)用程序略有一些優(yōu)勢。庫應(yīng)用程序比服務(wù)器應(yīng)用程序的性能優(yōu)點更大。這是因為庫應(yīng)用程序與 ASP 在同一進程內(nèi)運行,而服務(wù)器應(yīng)用程序在它們的自有進程內(nèi)運行。進程間的調(diào)用比進程內(nèi)調(diào)用開銷更大。而且,當(dāng)在進程之間傳遞諸如記錄集之類的數(shù)據(jù)時,必須在兩個進程之間復(fù)制所有的數(shù)據(jù)。

陷阱!當(dāng)使用 COM 服務(wù)器應(yīng)用程序時,如果您在 ASP 和 COM 之間傳遞對象,要確保對象執(zhí)行“按值匯集”或 MBV。執(zhí)行 MBV 的對象將它們自己從一個進程復(fù)制到另一個進程。這比下面一種方法好,采用這種方法時,對象仍在創(chuàng)建者的進程中,另外一個進程反復(fù)地調(diào)用創(chuàng)建進程以使用該對象。切斷連接的 ADO 記錄集將“按值匯集”,連接的記錄集則不然。Scripting.Dictionary 不執(zhí)行 MBV,且不在進程之間傳遞。最后,VB 程序員請注意:MBV 不通過傳遞參數(shù) ByVal 獲得。MBV 由原始的組件作者執(zhí)行。

怎么辦?
如果讓我們建議一個兼顧性能與可靠性的合理配置,它們應(yīng)是如下的配置:

在 IIS 4.0 中,使用 ASP 低隔離級別,使用 MTS 服務(wù)器程序包。
在 IIS 5.0 上,使用 ASP 的中隔離級,并使用 COM+ 庫應(yīng)用程序。
這些是非常一般的原則,主機服務(wù)公司一般情況下以中或高隔離級運行 ASP,而單用途的 Web 服務(wù)器可以以低隔離級運行。衡量各種利弊,并自己決定哪個配置更能符合您的需要。

技巧 10:使用顯式選項
在 .asp 文件中應(yīng)使用 Option Explicit。此指令放在 .asp 文件的最上面,它強制開發(fā)人員聲明要使用到的所有變量。許多程序員認(rèn)為這種方法對于調(diào)試應(yīng)用程序很有幫助,因為這種方法避免了鍵錯變量名和誤建新變量的可能性(例如,將 MyXMLString=) 錯寫成 MyXLMString=...。

更重要的一點也許是,聲明的變量比未聲明的變量速度更快。由此,腳本在運行時每次用到未聲明的變量時,按名稱引用它。另一方面,聲明的變量是有順序的,要么以編譯時間,要么以運行時間。以后,聲明的變量都按此順序引用。因為 Option Explicit 強制變量聲明,它能確保聲明所有變量,因此訪問的速度也很快。

技巧 11:在子例程和函數(shù)中使用局部變量
局部變量是那些在子例程和函數(shù)內(nèi)聲明的變量。在函數(shù)或子例程內(nèi),局部變量訪問比全局變量訪問更快。局部變量的使用也會使代碼更清晰,因此應(yīng)盡量使用局部變量。

技巧 12:將經(jīng)常使用的數(shù)據(jù)復(fù)制到腳本變量中
當(dāng)訪問 ASP 中的 COM 對象時,應(yīng)將經(jīng)常使用的對象數(shù)據(jù)復(fù)制到腳本變量中。這樣做可減少 COM 方法調(diào)用,因為 COM 方法調(diào)用與訪問腳本變量相比,開銷相對較大。當(dāng)訪問 Collection 和 Dictionary 對象時,這種技術(shù)也會減少開銷很大的查找。

一般來說,如果您打算不止一次訪問對象數(shù)據(jù),那么就應(yīng)將數(shù)據(jù)放到腳本變量中。這種優(yōu)化的主要目標(biāo)是 Request 變量(Form 和 QueryString 變量)。例如,您的站點可傳遞一個名為 UserID 的 QueryString 變量。假設(shè)此 UserID 在特定頁面上被引用 12 次。可以無須調(diào)用 Request(?UserID?) 12 次,而是在 ASP 頁面最上面將 UserID 指派到一個變量。然后在該頁面自始至終使用該變量。這樣就省去了 11 次 COM 方法調(diào)用。

實際上,訪問 COM 屬性或方法的開銷并沒有那么大。下面舉一個例子,說明某相當(dāng)常見的代碼(從語法上講):

Foo.bar.blah.baz = Foo.bar.blah.qaz(1)
If Foo.bar.blah.zaq = Foo.bar.blah.abc Then ' ...


當(dāng)此代碼運行時,下面是發(fā)生的情況:

變量 Foo 被解析為全局對象。
變量 bar 被解析為 Foo 的成員。這實際就是一次 COM 方法調(diào)用。
變量 blah 被解析為 Foo.bar 的成員。這又是一次 COM 方法調(diào)用。
變量 qaz 被解析為 foo.bar.blah 的成員。沒有錯,這還是一次 COM 方法調(diào)用。
調(diào)用 Foo.bar.blah.quaz(1)。再一次 COM 方法調(diào)用。懂了嗎?
再次執(zhí)行步驟 1 至步驟 3 以解析 baz。系統(tǒng)并不知道調(diào)用 qaz 是否改變對象模型,因此必須再次執(zhí)行步驟 1 至 3 以解析 baz。
將 baz 解析為 Foo.bar.blah 的成員。賦予屬性。
再次執(zhí)行步驟 1 至步驟 3 以解析 zaq。
再次執(zhí)行步驟 1 至步驟 3 以解析 abc。
正如您可看到的,效率相當(dāng)差(且慢)。以 VBScript 寫此代碼的快速方法是:

Set myobj = Foo.bar.blah ' do the resolution of blah ONCE
Myobj.baz = myobj.qaz(1)
If Myobj.zaq = Myobj.abc Then '...


如果您使用 VBScript 5.0 或更高版本,您可以使用 With 語句寫此代碼:

With Foo.bar.blah
.baz = .qaz(1)
If .zaq = .abc Then '...
...
End With


注意此技巧也適用于 VB 程序設(shè)計。

技巧 13:避免重新確定數(shù)組的維數(shù)
應(yīng)盡量避免 Redim 數(shù)組。就性能而言,如果計算機的物理內(nèi)存大小有限,最好將數(shù)組的初始維數(shù)設(shè)置為其最不利的情況 - 或?qū)⒕S數(shù)設(shè)置為其最佳的情況,然后再按需要重新確定維數(shù)。這并非意味著,如果知道您不需要內(nèi)存時,就隨便分配幾兆字節(jié)的內(nèi)存。

下面的代碼給您顯示使用 Dim 和 Redim 不當(dāng)?shù)那樾巍?

<%
Dim MyArray()
Redim MyArray(2)
MyArray(0) = ?hello?
MyArray(1) = ?good-bye?
MyArray(2) = ?farewell?
...
' some other code where you end up needing more space happens, then ...
Redim Preserve MyArray(5)
MyArray(3) = ?more stuff?
MyArray(4) = ?even more stuff?
MyArray(5) = ?yet more stuff?
%>


最好一開始就將數(shù)組的初始大小 Dim 正確(在本例中,是 5)比 Redim 數(shù)組使其更大好得多。您可能浪費一些內(nèi)存(如果您沒有使用所有的元素),但獲得的好處是速度變得更快。

技巧 14:使用響應(yīng)緩沖
您可以通過啟用“響應(yīng)緩沖”,將要輸出的一整頁緩沖起來。這樣就將寫到瀏覽器的量減到最少,從而改善總體性能。每個寫操作都會產(chǎn)生很大的系統(tǒng)開銷(在 IIS 中以及在通過網(wǎng)絡(luò)發(fā)送的數(shù)據(jù)量方面),因此寫操作越少越好。由于其啟動慢且使用 Nagling 算法(用來減輕網(wǎng)絡(luò)塞車情況),TCP/IP 在發(fā)送一些大的數(shù)據(jù)塊時比必須發(fā)送許多小的數(shù)據(jù)塊時的效率高得多。

有兩個方法啟用響應(yīng)緩沖。第一種,您可以使用 Internet Services Manager 為整個應(yīng)用程序啟用響應(yīng)緩沖。我們建議采用這種方法,在 IIS 4.0 和 IIS 5.0 中默認(rèn)為新的 ASP 應(yīng)用程序啟用響應(yīng)緩沖。第二種,可以在每個 ASP 頁面的接近頂端的地方加入下面的代碼行,從而啟用響應(yīng)緩沖:

<% Response.Buffer = True %>


此代碼行必須在任何響應(yīng)數(shù)據(jù)被寫到瀏覽器之前執(zhí)行(即,在任何 HTML 出現(xiàn)在 ASP 腳本之前以及在使用 Response.Cookies 集合設(shè)置任何 Cookies 之前)。一般來說,最好為整個應(yīng)用程序啟用響應(yīng)緩沖。這樣,您就不必在每個頁面最上面寫入上述的代碼行。

Response.Flush
關(guān)于響應(yīng)緩沖有一個常見的抱怨,就是用戶感覺到 ASP 頁面的響應(yīng)速度很慢(即使整個響應(yīng)時間得到改進),因為他們必須等到整個頁面生成,然后他們才能看到東西。對于運行時間長的頁面,您可以設(shè)置 Response.Buffer = False,禁用響應(yīng)緩沖。但是,一個更好的策略是利用 Response.Flush 方法。這種方法將 ASP 轉(zhuǎn)換的所有 HTML 送到瀏覽器。例如,在轉(zhuǎn)換 1,000 行的表的前 100 行之后,ASP 可以調(diào)用 Response.Flush,強制將轉(zhuǎn)換的結(jié)果送到瀏覽器,這樣可使用戶在其余的行準(zhǔn)備好之前看到頭 100 行。這種技術(shù)可以將響應(yīng)緩沖與瀏覽器逐漸顯示數(shù)據(jù)完美地結(jié)合在一起。

(注意在上面的 1,000 行表的舉例中,許多瀏覽器在它們看到關(guān)閉 </table> 標(biāo)記之前不會開始顯示表。檢查您的目標(biāo)瀏覽器是否支持。為避免這種情況,將表分成多個具有較少行的表,并在每個表之后調(diào)用 Response.Flush。較新版本的 Internet Explorer 在表完全下載之前就開始顯示表,如果您指定表列寬,顯示速度就會特別快,這樣做可避免強制 Internet Explorer 通過測量每個單元格的內(nèi)容寬度來計算列寬。)

另一個關(guān)于響應(yīng)緩沖的常見的抱怨是,當(dāng)產(chǎn)生非常大的頁面時,將占用許多服務(wù)器內(nèi)存。撇開產(chǎn)生大頁面的方法不談,這種問題也可通過巧妙使用 Response.Flush 來加以解決。  

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频
欧美日韩高清在线播放| 无吗不卡中文字幕| 麻豆freexxxx性91精品| 亚洲激情在线| 国产午夜精品一区二区| 成人国产一区二区三区精品| 欧美日韩一区二区三区四区| 亚洲男人天堂一区| av在线免费不卡| 一区视频在线| 久久综合九色综合欧美98| 蜜桃视频第一区免费观看| 99精品国产一区二区青青牛奶 | 日韩国产在线观看一区| 在线国产精品一区| 久久久蜜桃精品| 国产乱码精品一区二区三区av| 国产精品一区在线观看| 国产精品美女久久久久久久| 99国产精品久久| 欧美一区二区久久久| 免费成人小视频| 久久综合亚州| 亚洲成人资源网| 99亚洲一区二区| 亚洲免费成人av| 国产乱码精品一区二区三区不卡| 最新久久zyz资源站| 欧美激情第二页| 久久夜色精品一区| 丁香激情综合国产| 日韩午夜三级在线| 国产高清一区日本| 欧美日韩国产中文| 韩国精品一区二区| 欧美精品亚洲一区二区在线播放| 毛片不卡一区二区| 一区二区自拍| 18欧美乱大交hd1984| 国内精品久久国产| 国产精品第五页| 亚洲激情网站| 国产精品久久久久精k8 | 亚洲国产毛片aaaaa无费看| av成人免费观看| 亚洲精品中文字幕乱码三区| 国产乱人伦精品一区二区| 亚洲图片欧美视频| 在线视频你懂得一区| 亚洲一区二区三区激情| 久久激情婷婷| 国产麻豆精品95视频| 日韩美一区二区三区| 99久久精品免费精品国产| 国产欧美精品一区aⅴ影院 | 日韩精品欧美成人高清一区二区| 91成人国产精品| 国产一区二区三区在线观看免费| 久久一二三国产| 亚洲一区二三| 亚洲一区二区三区激情| 亚洲精品在线一区二区| 亚洲午夜免费视频| 色88888久久久久久影院按摩| 久久福利资源站| 欧美日韩午夜影院| 成人av影视在线观看| 国产精品国产三级国产aⅴ无密码| 91年精品国产| 亚洲人被黑人高潮完整版| 色综合久久精品| 岛国一区二区三区| 国产精品―色哟哟| 久久国产精品久久精品国产 | 日韩美女一区二区三区| 亚洲午夜一级| 视频一区欧美精品| 欧美一区二区高清| 亚洲看片一区| 国产福利一区二区| 亚洲永久免费av| 久久亚洲捆绑美女| 色素色在线综合| 欧美色图麻豆| 国产大陆亚洲精品国产| 亚洲精品欧美激情| 精品免费国产一区二区三区四区| 国产亚洲一级| av高清久久久| 精品无人区卡一卡二卡三乱码免费卡| 国产精品久久久久影院老司| 欧美日韩大陆在线| 国产日产精品一区二区三区四区的观看方式| 国产米奇在线777精品观看| 亚洲一区二三区| 国产女人aaa级久久久级| 欧美日韩久久不卡| 亚洲欧美视频| 国产字幕视频一区二区| 国产成人免费9x9x人网站视频| 亚洲一区二区三区爽爽爽爽爽| 久久一二三国产| 这里是久久伊人| 色诱亚洲精品久久久久久| 好吊视频一区二区三区四区 | 蜜臀av性久久久久蜜臀aⅴ| 一区二区三区免费网站| 日本一二三四高清不卡| 日韩美女主播在线视频一区二区三区| 国内成人自拍视频| 自拍视频在线观看一区二区| 在线观看成人免费视频| 国产精品入口66mio| 国产精品mm| 91在线观看美女| 成人综合在线视频| 蜜桃免费网站一区二区三区| 亚洲福利一区二区| 亚洲品质自拍视频网站| 国产精品视频观看| 欧美激情资源网| 久久久国际精品| 久久这里都是精品| 欧美不卡激情三级在线观看| 91精品国产福利| 7777精品伊人久久久大香线蕉| 欧美性三三影院| 欧美日韩综合不卡| 欧美日本一道本| 欧美日韩一区二区三区免费看| 在线一区二区视频| 91高清在线观看| 在线观看av一区二区| 色婷婷av一区二区三区软件 | 欧美一区二区性放荡片| 欧美一级在线视频| 91精品国产品国语在线不卡| 欧美人妇做爰xxxⅹ性高电影| 欧美日韩免费视频| 欧美日本乱大交xxxxx| 91精品国产品国语在线不卡| 日韩午夜激情免费电影| 久久综合一区二区| 国产日韩欧美精品一区| 国产精品三级视频| 亚洲三级免费电影| 亚洲一区二区三区中文字幕在线 | 中文字幕免费不卡在线| 亚洲同性gay激情无套| 亚洲精选一二三| 亚洲国产欧美另类丝袜| 老司机精品视频在线| 国产成人免费视频| 91丨porny丨中文| 影音欧美亚洲| 亚洲一区综合| 欧美日韩精品久久久| 精品国产乱码久久久久久老虎| 国产欧美日韩不卡| 亚洲主播在线观看| 久久精品免费观看| 成人av电影在线| 亚洲视频碰碰| 久久亚洲免费| 宅男在线国产精品| 亚洲国产精品ⅴa在线观看| 亚洲视频一二三区| 日韩精品每日更新| 粉嫩绯色av一区二区在线观看| 午夜激情一区| 美女国产精品| 91精品国产入口| 国产精品黄色在线观看| 五月激情丁香一区二区三区| 国产麻豆欧美日韩一区| 欧美日韩喷水| 老司机精品导航| 精品久久久久av影院| 亚洲蜜臀av乱码久久精品| 日本视频免费一区| 99久久精品免费看| 性色一区二区| 精品久久久久久久一区二区蜜臀| 亚洲精品亚洲人成人网在线播放| 麻豆高清免费国产一区| 91视视频在线观看入口直接观看www| 亚洲最新在线| 日韩一区二区三区在线| 亚洲卡通动漫在线| 国产91精品入口| 中文高清一区| 欧美va亚洲va在线观看蝴蝶网| 亚洲最快最全在线视频| 成人性色生活片免费看爆迷你毛片| 亚洲夫妻自拍| 日韩视频永久免费| 亚洲精品成a人| 国产高清不卡二三区| 亚洲永久免费精品| 精品国产一二三区|