熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

最大限度優化你的Asp程序的性能

2013-11-13 09:53:34  來源: .NET編程 

  ASP 能快速執行你的動態網頁但你還可以通過緊縮代碼和數據庫連接以使它們執行更快這是一篇關於怎樣精簡代碼和Asp 特征以獲得最快執行速度的詳細文章對於一個急燥的用戶來說任何在按下用戶按鈕到結果出現在它們的屏幕之間的延遲可能意味著它們會轉到浏覽其它的站點?假如你的是商業站點這有可能意味著失去潛在的銷售

  我們沒有任何辦法控制用戶的帶寬但我們的確能通過優化Asp 站點來獲得最佳的性能大部分潛在性能的提升是通過系統改變而不是緊縮代碼一個不合適的想法是一旦遇到系統效率問題就向系統管理者提意見要其升級系統

  首先哪個因素可能影響Asp的性能?很不幸有很多因素?下面這些只是其中的一部分

  可用帶寬

  服務器上的處理器和其它硬件的速度

  在服務器上運行的其它程序(比如象那些OpenGL屏幕保護程序!)

  數據庫連接模式連接池數據庫系統本身(比如Oracle優於Sql ServerSql server優於Access)

  所使用的語言

  存儲過程優於行式Sql語句

  使用編譯組件而不是VB或JavaScript好的Asp編程經驗比如錯誤處理等

  一些以上的因素可能已經被有IIS 知識經驗的開發者普遍留意到了但其它的可能對於他們來說是十分復雜的問題在這篇文章裡 將試著解釋所有影響Asp性能的每個因素讓我們看一看那些在我們刮胡子的幾毫秒內就能做到的主要事情

  ASP腳本大小

  你是腳本頁(還有其它頁面)是不是比必須的長度要長?這是一開始執行就會降低Asp 性能的東西ASP 腳本在用來獲取信息和格式化輸出的時候是十分有用的但腳本也是逐行解釋執行所以你的腳本越長執行它的時間也就越長

  如果你的腳本很龐大怎麼做才能減少腳本的長度呢?這裡有幾點建議

  你可以將它們轉換成服務器端組件也就是說做成VB動態鏈接庫DLL或者通過先進的Windows編程語言或適當的COM 接口語言將它轉換成未編譯組件?並且在服務器端注冊它們有關的快速指南可以在

  l找到對一個寫得好的ActiveX 組件進行編譯不但能大幅度提高性能還可以保護你的軟件(腳本)尤其當你將你的Asp站點發布在第三方主機上的時候

  因為腳本是逐行解釋執行的所以剔除多余的腳本或建立更高效率的腳本能夠改進性能如果你在單個Asp 文件中有數百行的代碼可能這樣做你能很好地劃分使用者買賣和數據服務事實上如果你這樣做可能會找出一些冗余的代碼如果你需要輸出幾個表格你可以編寫一個通用函數來輸出一個表格只是多次調用它

  在講述Asp 腳本的大小問題的時候不得不提及包含文件的大小當你使用一個包含文件的時候整個包含文件被裝入當包含文件被包含的時候相當於在Asp 文件本身寫下那部分代碼因此如果你在一個冗長的包含文件裡定義了很多通用的方法和定義要明白到在你包含該文件的時候不管你要不要用到裡面的每個方法和定義它都是被整個裝入的ASP 緩存全部的展開代碼這會降低查找效率在這種情況下包含文件必須被分割成更小的模塊化的文件也要明白到包含文件被服務器視為單獨的頁面請求使用太多的包含文件會影響下載時間

   以下是引用片段
  〈! #include file=Headerasp 
  〈! #include file=Footerasp 
  〈SCRIPT language=vbscript runat=server
  Sub Main()
  WriteHeader
  WriteBody
  WriteFooter
  End Sub
  Sub WriteBody()
  
  End Sub
  Main?調用過程Main
  〈/SCRIPT〉

  假如你的腳本冗長的話請使用ResponseIsClientConnected這意味著在客戶端不再連接到服務器的時候你的服務器CPU能避免循環等待

   以下是引用片段
  〈%
  檢查客戶端是否仍在連接
  If Not ResponseIsClientConnected Then
  仍然連接著處理程序
  Else
  斷開
  End If
  %〉

  Interspersing ASP and HTML

  每個人都這樣做?當我們輸出表格的時候我們會在ASP 和HTML代碼間轉換而這是一個不好的習慣例如

   以下是引用片段
  〈HTML〉
  〈BODY〉
  〈%
  Set MyConn = ServerCreateObject(ADODBConnection)
  MdbFilePath = ServerMapPath(samplemdb)
  MyConnOpen Driver={Microsoft Access Driver (*mdb)}; DBQ= & MdbFilePath & ;
  SQL_query = SELECT * FROM Friends
  Set RS = MyConnExecute(SQL_query)
  WHILE NOT RSEOF
  %〉
  〈LI〉〈%=RS(Name)%〉: 〈A HREF=〉Homepage〈/A〉
  〈%
  RSMoveNext
  WEND
  %〉
  〈/BODY〉
  〈/HTML〉

  另一個普遍的例子是使用IF語句的時候

   以下是引用片段
  〈%
  If Not Session(DBOpen) Then
  %〉
  〈H〉Database not connected〈/H
  〈%
  Else
  %〉
  〈H〉Database open〈/H
  〈%
  End If
  %〉

  在這些情況下腳本性能能通過將服務器端腳本寫到一起來而用Responsewrite產生Html代碼來提高性能比如

   以下是引用片段
  〈%
  If not Session (DBOpen) Then
  ResponseWrite 〈H〉Database not connected〈/H
  Else
  ResponseWrite 〈H〉Database open〈/H
  End If
  %〉

  在大的腳本和很多腳本的情況下你將能看到性能的提高注意這裡盡量避免了使用〈%標記這樣就能提高性能ASP不需在執行腳本的時候計算字符的Ascii碼


From:http://tw.wingwit.com/Article/program/net/201311/11887.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.