狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美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视频
亚洲欧洲精品一区| 欧美大度的电影原声| 亚洲国产一区二区三区a毛片| 99免费精品在线观看| 成人国产一区二区三区精品| 粉嫩一区二区三区性色av| 国产乱理伦片在线观看夜一区 | 欧美性色综合| 影音国产精品| 午夜在线一区二区| 久久三级视频| 久久久精品人体av艺术| 欧美一区二区不卡视频| 精品久久久三级丝袜| 久久久精品中文字幕麻豆发布| 久久精品夜夜夜夜久久| 亚洲国产经典视频| 一区二区在线观看av| 性做久久久久久免费观看欧美| 日本不卡123| 国产成人免费在线观看| 欧美国产三区| 中日韩男男gay无套| 色狠狠桃花综合| 欧美一区二区精美| 国产精品无遮挡| 亚洲成av人片在www色猫咪| 麻豆国产精品视频| 大胆欧美人体老妇| 亚洲午夜电影| 在线观看日韩精品| 日韩视频免费直播| 中文字幕综合网| 麻豆精品在线视频| 97精品国产97久久久久久久久久久久 | 久久精品国产99久久6| k8久久久一区二区三区| 国产精品社区| 欧美人与性动xxxx| 国产精品久久久久aaaa| 视频一区二区三区中文字幕| 国产v综合v亚洲欧| 亚洲一区国产| 日韩三级视频在线观看| 亚洲精品中文在线| 丰满亚洲少妇av| 国产伦精品一区二区三区四区免费| 欧美人妇做爰xxxⅹ性高电影| 国产视频911| 麻豆免费看一区二区三区| 91蝌蚪porny| 91国偷自产一区二区三区观看 | 国产精品久久久久国产精品日日| 玖玖九九国产精品| 亚洲午夜一级| 欧美一区二区三区视频在线观看 | 黄色成人在线网址| 欧美一区二区福利视频| 午夜伊人狠狠久久| 欧美精品黄色| 91麻豆精品国产91久久久久| 一区二区三区国产精品| 99久久免费精品| 欧美日韩三级一区| 成人丝袜18视频在线观看| 亚洲视频成人| 国产日韩欧美精品综合| 久久99精品国产91久久来源| 亚洲经典一区| 久久久久久一二三区| 久久99久久久欧美国产| 国产精品一区亚洲| 国产精品麻豆一区二区 | 久久久国产亚洲精品| 国产精品视频线看| 91麻豆精品秘密| 欧美一区二区在线观看| 美女网站色91| 亚洲欧美日韩国产一区二区| 国产精品国产三级国产普通话蜜臀 | 国产一区二区三区黄| 中文字幕欧美国产| av日韩在线网站| 91精品福利在线一区二区三区| 日韩精品成人一区二区在线| 日韩一级大片| 亚洲免费伊人电影| 国内激情久久| 国产精品色哟哟网站| 91热门视频在线观看| 精品国产91九色蝌蚪| 国产精品888| 91精品国产一区二区三区蜜臀| 蜜桃久久久久久| 日本电影欧美片| 日韩黄色免费电影| 色呦呦国产精品| 日本va欧美va欧美va精品| 久久久久久一区二区| 天天操天天干天天综合网| 香蕉国产精品偷在线观看不卡| 一区二区三区欧美视频| 国产一级一区二区| 亚洲国产精品嫩草影院| 国产精品午夜av在线| 亚洲在线视频网站| 毛片一区二区| 美女网站色91| 欧美一区二区三区视频| 国产成人免费视| 精品福利二区三区| 91色九色蝌蚪| 自拍偷自拍亚洲精品播放| 99综合视频| 石原莉奈在线亚洲三区| 欧美日韩免费一区二区三区| 国产一区二区三区不卡在线观看| 欧美一区二区三区视频免费播放| 国产**成人网毛片九色 | 性欧美疯狂xxxxbbbb| 在线国产电影不卡| 国产aⅴ综合色| 国产精品久久久久影视| 国产欧美一区二区三区另类精品 | 亚洲激情视频| 男女性色大片免费观看一区二区| 欧美日韩另类一区| av电影在线观看一区| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 在线午夜精品| 国产在线国偷精品产拍免费yy| 欧美成人官网二区| 亚洲图片在线观看| 青青草97国产精品免费观看无弹窗版| 欧美精品丝袜中出| 91视频在线观看| 亚洲一区二区综合| 这里只有精品视频在线观看| 欧美日本免费| 日本成人在线一区| 久久先锋影音av鲁色资源| 一区二区高清| 国产精品18久久久久久久网站| 国产精品网站在线播放| 色综合久久久久综合| 91在线一区二区| 午夜精品久久久久久不卡8050| 911精品国产一区二区在线| 欧美日本久久| 国产剧情一区二区三区| 亚洲欧美欧美一区二区三区| 欧美色中文字幕| 好吊一区二区三区| 国产毛片一区二区| 一区二区三区日韩精品| 久久国产88| 91丝袜高跟美女视频| 午夜精品久久久久久久久久 | 成人国产精品免费| 日韩精品电影一区亚洲| 国产精品色婷婷| 91精品国产综合久久精品图片| 激情婷婷欧美| 国产不卡免费视频| 人禽交欧美网站| 日韩美女视频一区| 精品国产三级a在线观看| 久久免费99精品久久久久久 | 国产丝袜在线精品| 欧美老人xxxx18| 亚洲欧美久久久| 国内精品久久国产| 99久久国产免费看| 久久99久久精品欧美| 一区二区三区欧美激情| 国产欧美日韩三区| 91精品国产色综合久久ai换脸 | 美女爽到呻吟久久久久| 国产综合18久久久久久| 国产suv精品一区二区6| 日本91福利区| 偷拍亚洲欧洲综合| 亚洲黄一区二区三区| 国产三级一区二区| 精品国偷自产国产一区| 欧美日韩一级黄| 一本色道久久综合精品竹菊| 极品少妇一区二区三区| 欧美在线观看天堂一区二区三区| 蜜桃精品视频在线| 日韩国产精品久久| 亚洲成人一区二区在线观看| 亚洲美女精品一区| 综合分类小说区另类春色亚洲小说欧美| 欧美精品一区二区精品网| 欧美日韩国产中文| 欧美日韩专区在线| 欧美综合亚洲图片综合区| 色香色香欲天天天影视综合网| 鲁大师影院一区二区三区|