ASP優(yōu)化:幾招提高ASP性能的最佳選擇(2)_ASP教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:馬克斯電影站生成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方法:

      來源:模板無憂//所屬分類:ASP教程/更新時間:2008-08-22
      相關(guān)ASP教程