最佳化ASP程式效能

來源:互聯網
上載者:User

標籤:style   ext   color   http   c   com   


    Active Server Pages可以讓動態網頁面很快地執行,但是,在代碼中和資料庫的串連上加入一些技巧,就能讓程式更快地執行。這是一篇關於如何精製指令碼程式以及ASP特徵來達到最大速度的文章。任何在使用者點擊按鈕到在螢幕上出現結果間延遲都會讓使用者茫然,對於一個商業網站,這就意味著潛在的使用者損失。 
ASP指令碼的尺寸


   我們也許不能控制使用者的頻寬,但是通過最佳化ASP網站,我們的確能夠使應用達到最佳效能。許多潛在的效能收穫可以通過系統調整,而不是改變代碼。

   因素

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

有限的頻寬 
伺服器端的處理器和其他硬體的速度 
在伺服器上啟動並執行其他進程(比如那些OpenGL螢幕保護裝置程式中的一個) 
資料庫連接模式,串連池,或者單獨的資料庫(比如Oracle、SQLServer、Access) 
使用的語言 
預存程序和SQL 
使用未編譯組件,而不是VB或者JavsScript的ASP 
良好的編程習慣,比如對錯誤的處理 
   對於一個有經驗的具備良好IIS知識的開發人員來說,以上一些特徵是很平常的,但是另外一些可能非常複雜。在這篇文章中,讓我們來研究一下如何做才能節省毫秒層級的時間,而不是試圖面面俱到。

   你的ASP指令碼程式對於實現的功能是否顯得過長?這就會從開始影響程式的效能。對於收集資訊和格式化輸出,ASP指令碼是非常有用的,但是指令碼是按照行來解釋執行的,所以代碼越長,執行時間越長。

   如果有一個很長的ASP指令碼程式,怎麼樣才能減少長度呢?這裡有一些建議。

   你可以將它們轉換為伺服器端組件,換言之,就是建立一個Visual Basic DLL檔案,或者使用任何現代的Windows 程式語言和COM相容語言來建立一個未編譯組件,並且在伺服器上註冊。關於這個功能的教程請參閱http://www.webdevelopersjournal.com/articles/activex_for_asp.html。一個編寫很好的ActiveX組件不僅能大幅度提高速度,而且,它還能大大地提高你的軟體的保護程度,特別是你為第3方開發ASP程式時。

   因為指令碼是一行行解釋執行的,所以排除多餘的指令碼或者建立有效率的指令碼,就能提高程式效能。如果在一個單一頁面中有成百行的ASP指令碼,你就可能很好地將程式分割成使用者、商業和資料服務部分。實際上,如果這麼做了,你就會發現一些多餘的代碼。比如,如果需要顯示幾個表格,就可以編寫一個通用的表格顯示函數,這樣,在需要的地方調用就可以了。

   與尺寸相關的另外一個問題就是包含檔案的長度。當執行一個#include檔案時,整個檔案都被調入,就象在被包含的檔案中存在一樣。所以,如果有一個甬餘的包含檔案,其中包含了許多全域方法和變數定義,那麼就請注意它們將被調入每一個包含它們的檔案中,而不管是否可用。ASP緩衝了所有的擴充代碼,導致了效率低下的搜尋。在這種情況下,包含檔案必須變小。儘管包含檔案被伺服器處理為單獨的請求,但是過多的使用#include,就會導致下載時間的過度增加。

< !-- #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 命令,這將避免因用戶端不再串連時CPU浪費運行迴圈。

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

分散ASP代碼和HTML語言命令
有人這麼做嗎?當描述表格時,在ASP和HTML進行切換,比如:

< 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>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.