• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 最優化ASP程序性能(轉)(二)

    發表于:2007-06-30來源:作者:點擊數: 標簽:
    數據庫 訪問 存取數據庫將會很快地減慢程序,但是沒有數據庫,許多站點也不行。不要使用內植的 SQL 語句來存取數據庫,你可以通過使用存儲過程來訪問數據庫,這將會贏得很大的程序 性能 ,而且,也非常得靈活。使用存儲過程,并配合ActiveX Data Objects(AD
    數據庫訪問

       存取數據庫將會很快地減慢程序,但是沒有數據庫,許多站點也不行。不要使用內植的SQL語句來存取數據庫,你可以通過使用存儲過程來訪問數據庫,這將會贏得很大的程序性能,而且,也非常得靈活。使用存儲過程,并配合ActiveX Data Objects(ADO),就能最大程度地控制存儲過程如何輸出。

       確認數據庫經過了索引,因為這將直接影響到應用程序的整體性能。同時,注意在數據庫上運行更新統計程序,從而更好地跟蹤數據的分布。注意,一些數據庫,比如MS Aclearcase/" target="_blank" >ccess,不適于企業級應用,而SQL Server 7.0或者Oracle更適于做這些。

       讓SQL做設計好的工作,包括對數據進行計算、加入、排序和分組。不要用其他語言寫這些功能,可以編寫一個查詢來完成。

       任何要計算的字段就是下面所示的簡單語法:

       SELECT count(*) FROM publishers WHERE state=‘’NY‘’

       如果要計算一個特殊字段,必須先按那個字段分組,否則,將不會工作:

       SELECT count(city),city FROM publishers GROUP BY city

       接著確定排序方法:

       SELECT * FROM TableName WHERE FieldName >50 OR FieldName< 100 ORDER BY FieldName2, FieldName3

       仍然使用ODBC系統或者文件DSN來連接數據庫,或者使用很快的OLEDB技術來連接。使用后者,當移動Web文件時,不再需要修改配置。

       OLEDB位于應用程序與ODBC層之間。在ASP頁面中,ADO就是位于OLEDB之上的程序。調用ADO時,首先發送給OLEDB,然后再發送給ODBC層??梢灾苯舆B接到OLEDB層,這么做后,將提高服務器端的性能。怎么直接連接到OLEDB呢?

       如果使用SQLServer 7,使用下面的代碼做為連接字符串:

    strConnString = "DSN=‘’‘’;DRIVER={SQL SERVER};" & _
                    "UID=myuid;PWD=mypwd;" & _
                    "DATABASE=MyDb;SERVER=MyServer;"

       最重要的參數就是“DRIVER=”部分。如果你想繞過ODBC而使用OLEDB來訪問SQL Server,使用下面的語法:

    strConnString ="Provider=SQLOLEDB.1;Password=mypassword;" & _
                   "Persist Security Info=True;User ID=myuid;" & _
                   "Initial Catalog=mydbname;" & _
                   "Data Source=myserver;Connect Timeout=15"

       為什么這很重要

       現在你可能奇怪為什么學習這種新的連接方法很關鍵?為什么不使用標準的DSN或者系統DSN方法?好,根據Wrox在他們的ADO 2.0程序員參考書籍中所做的測試,如果使用OLEDB連接,要比使用DSN或者DSN-less連接,有以下的性能提高表現:

       性能比較
    SQL Access
      OLEDB DSN   OLEDB DSN
    連接時間: 18 82 連接時間: 62 99
    重復1,000個記錄的時間: 2900 5400 重復1,000個記錄的時間: 100 950

       這個結論在Wrox的ADO 2.0程序員參考發表。時間是以毫秒為單位,重復1,000個記錄的時間是以服務器油標的方式計算的。

       ● 只有可能,就使用客戶端腳本對用戶輸入進行驗證,以此來最小化HTTP請求的循環操作。

       如果瀏覽器具備執行JavaScript或其他腳本的能力,請充分應用,從而解放服務器端的資源。

       下面的VBScript腳本在用戶的瀏覽器端運行,檢查用戶信息,然后再提交給服務器:

    < SCRIPT LANGUAGE="VBScript" >
    < !--
    Sub btnEnter_OnClick
      Dim TheForm
      Set TheForm = Document.MyForm
      If IsNumeric(TheForm.Age.Value) Then    
        TheForm.submit
      Else
        Msgbox "Please enter a numerical age."
      End if
    End Sub
    //-- >
    < /SCRIPT >

    < FORM  method="POST" name=MyForm  action="myfile.asp"   >  
       Name: < INPUT typr="text" name="Name"  >
       Age: < INPUT type="text" name="Age"  >
       < INPUT type="button" name="btnEnter"  value="Enter" >
    < /FORM >

       ● 使用局部變量,而不要使用全局變量

       因為局部變量可以很快地被ASP腳本引擎所存取,整個名字空間不必被搜索。避免重定義數組,在數組初始化時就分配足夠的尺寸,會大大地提高效率。這么做可能浪費一些內存,但是確贏得了速度,尤其是在服務器有很大的負載時。

       ● 使用< OBJECT > 標記創建對象

       如果需要引用一個實際上可能不被使用的對象,使用< OBJECT >標記來例示它們,而不要用Server.CreateObject。后者將導致對象立即被創建,而< OBJECT >是當對象被首次引用時才被創建。

       比如,下面的代碼演示了使用< OBJECT >標記來創建一個應用程序范圍內的AD Rotator對象實例:

    < OBJECT runat=server scope=Application id=MyAds progid="MSWC.AdRotator" >
    < /OBJECT >
       然后,就可以在其他頁面引用它:

       ● 打開“Option Explicit”

       在VB和VBScript中,你可以不用明確地定義就使用變量。但是打開“明確定義變量”選項,將有助于提高程序性能。未定義的局部變量是很慢的,因為在變量創建前,整個的名字空間都要搜索,看看是否變量已經存在。所以,請打開“Option Explicit”,這是一個好的編程習慣。

       ● 慎用 Server.MapPath

       除非必須,不要使用Server.MapPath!相反,如果知道路徑,就使用明確的文字路徑來表示。使用MapPath,將要求IIS去取回當前服務器路徑,這意味著對IIS一個特殊的請求,從而降低了程序性能。另外的完成這個工作的方法是在局部變量中保存路徑信息,當需要使用它時,服務器就不用再被過度請求。

       檢查怎樣做

       你可以通過下面的工具來測算服務器性能:Task Manager,NetMon 和 PerfMon。用WCAT (Web Capacity Analysis Tool)測量服務器的容量。你可以使用WCAT來檢查Internet信息服務和網絡配置如何響應不同的客戶端對內容、數據和HTML頁面的請求。測試的結果可以被用來決定如何最優化服務器和網絡配置。

       通過最優化ASP應用程序性能,Web站點應用將會變得很快,最終做到:當不需要時,就不需要去做影響性能的點擊。

       總結

       當談到ASP性能時,要涉及到許多方面,本文已經討論了一些。但是,對于每個具體的應用,應該有單獨的考慮,并不是這里討論的技巧都能很合適地滿足。


    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>