asp效能測試報告(轉)(二)

來源:互聯網
上載者:User
效能 、ASP動態產生的內容以什麼方式輸出效率最高?
作 者 : 仙人掌工作室                                   本文點擊次數:123


   在伺服器上產生動態內容是使用ASP最主要的原因之一,所以我們選擇的第一個測試專案是確定把動態內容發送到應答流使用什麼方法最好。基本的選擇有兩種(以及它們的一些變化):使用內嵌ASP標記,使用Response.Write語句。

   為測試這些不同的方法,我們建立了一個簡單的ASP頁面,頁面先定義一些變數然後把它們插入到表格。雖然這個頁面很簡單,而且沒有實際用途,但它足以讓我們分離和測試各個問題。

   2.1 使用ASP內嵌標記

   第一個測試是使用ASP的內嵌標記< %= x % >,其中x是一個變數。這是使用最方便的方法,而且它可以讓頁面的HTML部分變得更容易閱讀和維護。
< % OPTION EXPLICIT
Dim FirstName
Dim LastName
Dim MiddleInitial
Dim Address
Dim City
Dim State
Dim PhoneNumber
Dim FaxNumber
Dim EMail
Dim BirthDate

FirstName = "John"
MiddleInitial = "Q"
LastName = "Public"
Address = "100 Main Street"
City = "New York"
State = "NY"
PhoneNumber = "1-212-555-1234"
FaxNumber = "1-212-555-1234"
EMail = "john@public.com"
BirthDate = "1/1/1950"
% >

< HTML >
< HEAD >
     < TITLE >Response Test< / TITLE  >
< /HEAD >
< BODY >
< H1 >Response Test< /H1 >
< TABLE >
< tr >< td >< b >First Name:< /b >< /td >< td >< %= FirstName % >< /td >< /tr >
< tr >< td >< b >Middle Initial:< /b >< /td >< td >< %= MiddleInitial % >< /td >< /tr >
< tr >< td >< b >Last Name:< /b >< /td >< td >< %= LastName % >< /td >< /tr >
< tr >< td >< b >Address:< /b >< /td >< td >< %= Address % >< /td >< /tr >
< tr >< td >< b >City:< /b >< /td >< td >< %= City % >< /td >< /tr >
< tr >< td >< b >State:< /b >< /td >< td >< %= State % >< /td >< /tr >
< tr >< td >< b >Phone Number:< /b >< /td >< td >< %= PhoneNumber % >< /td >< /tr >
< tr >< td >< b >Fax Number:< /b >< /td >< td >< %= FaxNumber % >< /td >< /tr >
< tr >< td >< b >EMail:< /b >< /td >< td >< %= EMail % >< /td >< /tr >
< tr >< td >< b >Birth Date:< /b >< /td >< td >< %= BirthDate % >< /td >< /tr >
< /TABLE >
< /BODY >
< /HTML >
/app1/response1.asp的完整代碼

最好記錄 = 8.28 毫秒/頁




   2.2 使用Response.Write輸出每一行HTML代碼

   許多優秀的文獻指出,應當避免使用前面的內嵌標記方法,因為它導致一個稱為“環境切換”的操作。這個操作發生在Web伺服器所處理的代碼類型發生變化的時候(從純HTML的發送到指令碼處理,或反過來),這種切換需要一定的時間。許多程式員在瞭解了這一點之後,他們的第一個反應是將每一行HTML代碼都用Response.Write函數來輸出:
...
Response.Write("< html >")
Response.Write("< head >")
Response.Write("     < title >Response Test< /title >")
Response.Write("< /head >")
Response.Write("< body >")
Response.Write("< h1 >Response Test< /h1 >")
Response.Write("< table >")
Response.Write("< tr >< td >< b >First Name:< /b >< /td >< td >" & FirstName & "< /td >< /tr >")
Response.Write("< tr >< td >< b >Middle Initial:< /b >< /td >< td >" & MiddleInitial & "< /td >< /tr >")
...
/app1/response2.asp片斷

最好記錄 = 8.28 毫秒/頁
回應時間 = 8.08 毫秒/頁
差  額 = -0.20 毫秒 (減少 2.4%)




   和內嵌標記版本相比,我們所看到的效能改善非常小,簡直令人驚訝。這或許是因為頁面中多出了許多函數調用。不過這種方法還有一個更大的缺點,由於HTML代碼嵌入到了函數內,指令碼代碼變得非常冗長,閱讀和維護都不方便。

   2.3 使用封裝函數

   Response.Write並不會在文本行的末尾加上CRLF(Carriage Return - Line Feed,斷行符號換行),這是使用上面這種方法最令人失望的地方。儘管已經在伺服器端把HTML代碼作了很好的格式化,但在瀏覽器中看到的仍舊只有長長的一行代碼。不過失望的不僅是這一個問題,人們很快就發現不存在能夠自動添加CRLF的Response.WriteLn函數。一個很自然的反應就是建立Response.Write的封裝函數,在每行的後面加上CRLF:
...
writeCR("< tr >< td >< b >First Name:< /b >< /td >< td >" & FirstName & "< /td >< /tr >")
...
SUB writeCR(str)
    Response.Write(str & vbCRLF)
END SUB
/a



相關文章

聯繫我們

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