六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

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

[摘要]在服務器上生成動態內容是使用ASP最主要的原因之一,所以我們選擇的第一個測試項目是確定把動態內容發送到應答流使用什么方法最好�;镜倪x擇有兩種(以及它們的一些變化):使用內嵌ASP標記,使用Response.Write語句。 為測試這些不同的方法,我們創建了一個簡單的ASP頁面,頁面先定義一些變...

在服務器上生成動態內容是使用ASP最主要的原因之一,所以我們選擇的第一個測試項目是確定把動態內容發送到應答流使用什么方法最好�;镜倪x擇有兩種(以及它們的一些變化):使用內嵌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 = "[email protected]"
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
/app1/response4.asp片斷

最好記錄 = 8.08 毫秒/頁
響應時間 = 10.11 毫秒/頁
差額 = +2.03 毫秒 (增加 25.1%)




結果是性能的大大下降。當然,這主要是因為這種方法使得函數的調用次數加倍,它對性能的影響非常明顯。應當不惜代價地避免這種用法,CRLF導致每行的末尾多了兩個字節,而這兩個字節對于瀏覽器顯示頁面是沒有用的。在大多數情況下,瀏覽器端HTML代碼的格式美觀只是方便了你的競爭者閱讀和理解頁面的設計。

2.4 合并多個Response.Write

如果不考慮最后一次有關封裝函數的測試,下一個合理的步驟應當是將所有字符串從分開的Response.Write語句合并到一個語句,從而減少函數調用次數、提高代碼運行效率。
...
Response.Write("< 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 >Birth Date:< /b >< /td >< td >" & BirthDate & "< /td >< /tr >" & _
"< /table >" & _
"< /body >" & _
"< /html >")
/app1/response3.asp片斷

最好記錄 = 8.08 毫秒/頁
響應時間 = 7.05 毫秒/頁
差額 = -1.03 毫秒 (減少 12.7%)




這是目前為止最好的方法。

2.5 合并多個Response.Write,且在每一行的末尾增加CRLF

也有人非常關注他們的HTML代碼在瀏覽器端是否美觀,因此我們又在每一行HTML代碼的末尾加上了一個回車,使用的是vbCRLF常量,其他的測試代碼與上例一樣。
...
Response.Write("< html >" & vbCRLF & _
"< head >" & vbCRLF & _
" < title >Response Test< /title >" & vbCRLF & _
"< /head >" & vbCRLF & _
...
/app1/response5.asp片斷

最好記錄 = 7.05 毫秒/頁
響應時間 = 7.63 毫秒/頁
差額 = +0.58 毫秒 (增加 8.5%)




結果是性能略有下降,這可能是因為增加了字符串連接操作,同時輸出的文本也增加了。

2.6 意見

根據上述ASP輸出測試的結果,我們得出如下編碼規則:

避免過多地使用內嵌ASP。
把盡可能多的Response.Write語句合并成單個語句。
絕對不要為了加上CRLF而封裝Response.Write。
如果要格式化HTML輸出,直接在Response.Write語句后面加上CRLF。
(出處:熱點網絡)


主站蜘蛛池模板: 亚州第一视频 | 亚洲免费观看 | 色五婷婷 | 色视频线观看在线播放 | 日日日天天射天天干视频 | 在线成人免费观看国产精品 | 色欧美色| 日本视频在线免费看 | 欧美中文字幕在线观看 | 一区二区三区久久 | 日韩不卡在线视频 | 日韩在线天堂免费观看 | 日韩中文字幕免费版 | 手机在线观看国产精选免费 | 在线不卡一区二区三区日韩 | 天天草夜夜骑 | 日韩毛片在线影视 | 青青青在线视频人视频在线 | 性欧美人| 五月婷婷综合基地 | 日日噜噜噜噜人人爽亚洲精品 | 欧美一级久久久久久久大片 | 日本免费一区视频 | 日日摸人人拍人人澡 | 青青青草国产 | 日韩欧美亚洲国产精品字幕久久久 | 色偷偷影院| 日韩一区二区精品久久高清 | 天天爽夜夜爽人人爽 | 亚洲欧美一区二区三区在线观看 | 四虎影视免费在线观看 | 欧美一级高清片欧美国产欧美 | 亚洲日韩精品欧美一区二区一 | 欧美中文日韩 | 欧美在线香蕉在线现视频 | 亚洲欧洲尹人香蕉综合 | 亚洲a视频在线 | 午夜免费观看视频 | 亚洲s色大片在线观看下载 亚洲s色 | 色射啪| 色播激情五月 |