台灣最大程式設計社群網站
線上人數
1169
 
會員總數:245394
討論主題:189183
歡迎您免費加入會員
討論區列表 >> 專欄文章 >> 改善ASP效能的訣竅-14 (Nancy Cluts 著)
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
改善ASP效能的訣竅-14 (Nancy Cluts 著)
價值 : 0 QP  點閱數:2087 回應數:0

樓主

站務人員 站長
門外漢
0 1580
542 9
發送站內信

捐贈 VP 給 站務人員
訣竅 14:使用回應緩衝

您可以藉由啟動「回應緩衝」來將值得輸出的整個畫面緩衝起來。
這樣可以將寫到瀏覽器的量減到最少,因而改善總體效能。
每個寫入作業都要很大的虛耗空間 (在 IIS 中以及在透過網路傳送的資料量方面),因此寫入作業越少越好。
由於其啟動慢和使用 Nagling 演算法 (用來減輕網路塞車情況),TCP/IP 在傳送一些大的資料區塊時比必須傳送許多小的資料區塊時的效率高得多。

回應緩衝有兩個啟動方法。第一種,您可以使用 Internet Services Manager 啟動整個應用程式的回應緩衝。
我們建議採用這種方法,在 IIS 4.0 和 IIS 5.0 中在預設情況下為啟動新的 ASP 應用程式的回應緩衝。
第二種,可以在每個 ASP 畫面的接近頂端的地方放入下面的程式碼,以啟動回應緩衝:

<% Response.Buffer = True %>


此行程式碼必須在任何回應資料被寫到瀏覽器之前執行 (即,在任何 HTML 出現在 ASP 指令碼之前以及使用 Response.Cookies 集合設定任何 Cookies 之前)。
一般來說,最好啟動整個應用程式的回應緩衝。這樣,您就不必在每個畫面最上面寫入上述的程式碼。

Response.Flush
關於回應緩衝有一個常見的抱怨,就是使用者感覺到 ASP 頁面的回應速度較差 (即使整個回應時間有所改進),因為他們必須等待整個畫面產生,然後才能開始看到東西。
對於執行時間長的畫面,您可以用設定 Response.Buffer = False,取消回應緩衝。
但是,比較好的策略是利用 Response.Flush 方法。這種方法將 ASP 轉換的所有 HTML 送到瀏覽器。
例如,在轉換有 1,000 資料列的資料表中的 100 資料列之後,ASP 可以呼叫 Response.Flush 強制將轉換的結果送到瀏覽器,這樣可以讓使用者在其餘的資料列準備好之前看到頭 100 列。
這種技術可以將回應緩衝與瀏覽器逐漸顯示資料完美地結合在一起。

(注意在上面的 1,000 資料列資料表的範例中,許多瀏覽器在看到關閉 </table> 標記之前不會開始顯示資料表。
檢查您的目標瀏覽器是否有支援。為避免這種情況,將資料表分成多個具有較少資料列的資料表,並在每個資料表之後呼叫 Response.Flush。
較新版本的 Internet Explorer 在表格完全下載之前就開始顯示資料表,如果您指定資料表欄寬,顯示速度就會特別快,這樣做可避免強制 Internet Explorer 透過測量每個儲存格的內容寬度來計算欄寬。)

另一個關於回應緩衝的常見的抱怨是,當產生非常大的畫面時,將佔用許多伺服器記憶體。
撇開產生大畫面的方法不談,這種問題也可以透過巧妙使用 Response.Flush 來加以解決。

本篇文章發表於2000-09-09 00:00
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
目前尚無任何回覆
   

回覆
如要回應,請先登入.