ASP優(yōu)化:幾招提高ASP性能的最佳選擇(2)_ASP教程
推薦:馬克斯電影站生成Rss Feed的代碼前段時間為了給本人的電影站增加Rss訂閱功能,動手寫了個動態(tài)生成Rss Feed的ASP代碼,沒法上傳附件,就直接貼代碼吧,反正也不長,用馬克斯做電影站的朋友直接拿去用吧,其它類型的站點修改一下
使用包裝函數(shù)
當(dāng)我們試圖使用Response.Write 語句這種方法時,最令人灰心的發(fā)現(xiàn)可能就是Response.Write 函數(shù)不能在每行的結(jié)尾處放置一個CRLF 。因此,當(dāng)你從瀏覽器中閱讀源代碼時,本來布置得非常好的HTML,現(xiàn)在成了沒有結(jié)束的一行。我想,你的下一個發(fā)現(xiàn)可能會更令你恐怖:在Response 對象中沒有其姊妹函數(shù)Writeln 。所以,一個很明顯的反應(yīng)就是為Response.Write 函數(shù)創(chuàng)建一個包裝函數(shù),以便給每一行都附加一個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的片段 以前的最佳(反應(yīng)速度)= 8.08 msec/page 反應(yīng)時間= 10.11 msec/page 差 = 2.03 msec (增加 25.1%) |
當(dāng)然,由于這種方法有效地使函數(shù)調(diào)用次數(shù)加倍,其對性能的影響也很明顯,因此要不惜一切代價避免。具有諷刺意味的是CRLF也向反應(yīng)流中為每行增加了2個字節(jié),而這是瀏覽器不需要呈現(xiàn)到頁面上的。格式化良好的HTML所做的一切就是讓你的競爭者更容易閱讀你的HTML源代碼并理解你的設(shè)計。
將連續(xù)的Response.Write 連接到一個單獨語句中
不考慮我們前面用包裝函數(shù)進行的測試,下一個合乎邏輯的步驟就是從單獨的Response.Write 語句中提取出所有的字符串,將它們連接到一個單獨語句中,這樣就減少了函數(shù)調(diào)用的次數(shù),極大地提高了頁面的性能。
… 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的片段
以前的最佳(反應(yīng)速度)= 8.08 msec/page
反應(yīng)時間 = 7.05 msec/page
差 = -1.03 msec (減少12.7%)
目前,這是最優(yōu)化的配置。
將連續(xù)的Response.Write 連接到一個單獨語句中,在每行結(jié)尾處增加一個CRLF
考慮到那些要求他們的源代碼從瀏覽器中看要很純粹的人,我用vbCRLF 常量在前面測試中每行的結(jié)尾處插入了一些回車,然后重新運行。
… Response.Write("<html>" & vbCRLF & _ "<head>" & vbCRLF & _ " <title>Response Test</title>" & vbCRLF & _ "</head>" & vbCRLF & _ … |
/app1/response5.asp的片段
前面的最佳(反應(yīng)速度)= 7.05 msec/page
反應(yīng)時間= 7.63 msec/page
差 = 0.58 msec (增加 8.5%)
運行的結(jié)果在性能上有一點降低,這也許是由于額外的串聯(lián)和增加的字符量。
回顧和觀測
從前面有關(guān)ASP輸出的測試中可以得出一些規(guī)則:
* 避免內(nèi)聯(lián)ASP的過多使用。
* 總是將連續(xù)Response.Write 語句連接進一個單獨語句內(nèi)。
* 永遠不要在Response.Write 周圍使用包裝函數(shù)來附加CRLF。
* 如果必須格式化HTML輸出,直接在Response.Write 語句內(nèi)附加CRLF。
是否應(yīng)該開啟緩沖器?
通過腳本程序啟動緩沖器
在ASP腳本的頂部包含Response.Buffer=True ,IIS就會將頁面的內(nèi)容緩存。
<% OPTION EXPLICIT Response.Buffer = true Dim FirstName … |
/app1/buffer__1.asp的片段
以前的最佳(反應(yīng)時間)= 7.05 msec/page
反應(yīng)時間 = 6.08 msec/page
差= -0.97 msec (降低13.7%)
性能得到了極大提高。但是等等,還能有更好的。
通過服務(wù)器配置啟動緩沖器
雖然在IIS 5.0中緩沖器是被默認啟動的,但是在IIS 4.0中還必須手動來啟動它。這時要找到站點的Properties 對話框,在那里,從Home Directory 標(biāo)簽中選擇配置按鈕。然后在"App options"下選擇"enable buffering" 。對于這個測試,Response.Buffer 語句從腳本中被移走了。
以前的最佳= 7.05 msec/page
反應(yīng)時間 = 5.57 msec/page
差= -1.48 msec (降低 21.0%)
目前,這是我們所得到的最快反應(yīng)了,比我們以前最好情況下的反應(yīng)時間還要降低21%。從現(xiàn)在開始,我們以后的測試都要把這個反應(yīng)時間作為基準值。
分享:ASP 編程中20個非常有用的例子(一)1、如何用Asp判斷你的網(wǎng)站的虛擬物理路徑
答:使用Mappath方法:< %= Server.MapPath("")% >
2、我如何知道使用者所用的瀏覽器?
答:使用the Request object方法:
- 相關(guān)鏈接:
- 教程說明:
ASP教程-ASP優(yōu)化:幾招提高ASP性能的最佳選擇(2)。