人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

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

最優(yōu)化ASP程序性能(轉(zhuǎn))

最優(yōu)化ASP程序性能(轉(zhuǎn))

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

Active Server Pages可以讓動(dòng)態(tài)頁面很快地執(zhí)行,但是,在代碼中和數(shù)據(jù)庫的連接上加入一些技巧,就能讓程序更快地執(zhí)行。這是一篇關(guān)于如何精制腳本程序以及ASP特征來達(dá)到最大速度的文章。任何在用戶點(diǎn)擊按鈕到在屏幕上出現(xiàn)結(jié)果間延遲都會(huì)讓用戶茫然,對于一個(gè)商業(yè)站點(diǎn),這就意味著潛在的用戶損失。
ASP腳本的尺寸


   我們也許不能控制用戶的帶寬,但是通過優(yōu)化ASP站點(diǎn),我們的確能夠使應(yīng)用達(dá)到最佳性能。許多潛在的性能收獲可以通過系統(tǒng)調(diào)整,而不是改變代碼。

   因素

   首先,有哪些因素可能影響ASP程序的性能?很不幸,有許多嗎?這里僅僅是一些:

有限的帶寬
服務(wù)器端的處理器和其他硬件的速度
在服務(wù)器上運(yùn)行的其他進(jìn)程(比如那些OpenGL屏幕保護(hù)程序中的一個(gè))
數(shù)據(jù)庫連接模式,連接池,或者單獨(dú)的數(shù)據(jù)庫(比如Oracle、SQLServer、Access)
使用的語言
存儲(chǔ)過程和SQL
使用未編譯組件,而不是VB或者JavsScript的ASP
良好的編程習(xí)慣,比如對錯(cuò)誤的處理
   對于一個(gè)有經(jīng)驗(yàn)的具備良好IIS知識(shí)的開發(fā)者來說,以上一些特征是很平常的,但是另外一些可能非常復(fù)雜。在這篇文章中,讓我們來研究一下如何做才能節(jié)省毫秒級(jí)別的時(shí)間,而不是試圖面面俱到。

   你的ASP腳本程序?qū)τ趯?shí)現(xiàn)的功能是否顯得過長?這就會(huì)從開始影響程序的性能。對于收集信息和格式化輸出,ASP腳本是非常有用的,但是腳本是按照行來解釋執(zhí)行的,所以代碼越長,執(zhí)行時(shí)間越長。

   如果有一個(gè)很長的ASP腳本程序,怎么樣才能減少長度呢?這里有一些建議。

   你可以將它們轉(zhuǎn)換為服務(wù)器端組件,換言之,就是創(chuàng)建一個(gè)Visual Basic DLL文件,或者使用任何現(xiàn)代的Windows 程序語言和COM兼容語言來建立一個(gè)未編譯組件,并且在服務(wù)器上注冊。關(guān)于這個(gè)功能的教程請參閱http://www.webdevelopersjournal.com/articles/activex_for_asp.html。一個(gè)編寫很好的ActiveX組件不僅能大幅度提高速度,而且,它還能大大地提高你的軟件的保護(hù)程度,特別是你為第3方開發(fā)ASP程序時(shí)。

   因?yàn)槟_本是一行行解釋執(zhí)行的,所以排除多余的腳本或者建立有效率的腳本,就能提高程序性能。如果在一個(gè)單一頁面中有成百行的ASP腳本,你就可能很好地將程序分割成用戶、商業(yè)和數(shù)據(jù)服務(wù)部分。實(shí)際上,如果這么做了,你就會(huì)發(fā)現(xiàn)一些多余的代碼。比如,如果需要顯示幾個(gè)表格,就可以編寫一個(gè)通用的表格顯示函數(shù),這樣,在需要的地方調(diào)用就可以了。

   與尺寸相關(guān)的另外一個(gè)問題就是包含文件的長度。當(dāng)執(zhí)行一個(gè)#include文件時(shí),整個(gè)文件都被調(diào)入,就象在被包含的文件中存在一樣。所以,如果有一個(gè)甬余的包含文件,其中包含了許多全局方法和變量定義,那么就請注意它們將被調(diào)入每一個(gè)包含它們的文件中,而不管是否可用。ASP緩存了所有的擴(kuò)展代碼,導(dǎo)致了效率低下的搜索。在這種情況下,包含文件必須變小。盡管包含文件被服務(wù)器處理為單獨(dú)的請求,但是過多的使用#include,就會(huì)導(dǎo)致下載時(shí)間的過度增加。

< !-- #include file="Header.asp" -->
< !-- #include file="Footer.asp" -- >
< SCRIPT language="vbscript" runat="server" >

Sub Main()
WriteHeader
WriteBody
WriteFooter
End Sub

Sub WriteBody()
...
End Sub

Main 'call sub Main
< /SCRIPT >

   如果腳本很長,注意要使用 Response.IsClientConnected 命令,這將避免因客戶端不再連接時(shí)CPU浪費(fèi)運(yùn)行循環(huán)。

< %
'check to see if the client is connected
If Not Response.IsClientConnected Then
'still connected so proceed
Else
'disconnected
End If
% >

分散ASP代碼和HTML語言命令
有人這么做嗎?當(dāng)描述表格時(shí),在ASP和HTML進(jìn)行切換,比如:

< HTML >
< BODY >
< %
Set MyConn = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("sample.mdb")
MyConn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
SQL_query = "SELECT * FROM Friends"
Set RS = MyConn.Execute(SQL_query)
WHILE NOT RS.EOF
% >
< LI >< %=RS("Name")% >: < A HREF="< %=RS("Link")% >" >Homepage< /A >
< %
RS.MoveNext
WEND
% >
< /BODY >
< /HTML >

   另外一個(gè)例子是使用If命令:

< %
If Not Session("DBOpen") Then
% >
< H1 >Database not connected< /H1 >
< %
Else
% >
< H1 >Database open< /H1 >
< %
End If
% >

   在以上2個(gè)例子中,腳本性能能通過保持ASP程序塊在服務(wù)器端以及使用Response.Write來產(chǎn)生HTML代碼來提高性能,就象下面一樣:

< %
If not Session ("DBOpen") Then
 Response.Write "< H1 >Database not connected< /H1 >"
Else
 Response.Write "< H1 >Database open< /H1 >"
End If
% >

對于大且長的腳本,你可以通過上面的方法看到明顯的性能提高。
   會(huì)話狀態(tài)

   毋庸置疑,通過session在ASP中保持狀態(tài)是一個(gè)非常重要的特征。然而,這將影響程序的性能。很明顯,服務(wù)器的伸縮性因?yàn)閟ession僅僅能局限于單一服務(wù)器而變成一個(gè)問題,一個(gè)session為每一個(gè)用戶都要消耗資源。

   如果不使用session變量,而且實(shí)際上也可能不需要,因?yàn)槭褂秒[藏表單域、在數(shù)據(jù)庫中存儲(chǔ)數(shù)值以及使用查詢字符串可以完成session的功能,這時(shí),就應(yīng)該屏蔽session狀態(tài),代碼如下:

   @EnableSessionState = False

   這樣,ASP就將不再檢查session信息。

   如果確實(shí)要依靠session狀態(tài),那么請避免在session對象中存放大量的數(shù)據(jù)。如果設(shè)置了客戶端的HTTP Cookies,那么IIS中的Session是生效的,并且直到session被中止或者到期,為每一個(gè)session分配的內(nèi)存空間將一直保留。由于這個(gè)原因,當(dāng)有許多并發(fā)用戶訪問站點(diǎn)時(shí),資源將會(huì)很快耗盡。

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

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
主站蜘蛛池模板: 米泉市| 静宁县| 马山县| 景泰县| 广昌县| 仲巴县| 长垣县| 仪陇县| 霍林郭勒市| 平陆县| 云安县| 新建县| 沿河| 南开区| 山丹县| 阜平县| 临夏县| 永寿县| 龙海市| 蓝山县| 黔南| 泽州县| 通州市| 祁东县| 花莲县| 扬中市| 鄂伦春自治旗| 巴东县| 拉萨市| 冕宁县| 兰州市| 普兰县| 凤凰县| 西畴县| 拉萨市| 绥芬河市| 乌拉特后旗| 乌鲁木齐市| 历史| 普定县| 太仆寺旗|