2010-07-26 277 views
1

從服務器到客戶端瀏覽器如何進行ASP.NET頁面渲染?問題是,考慮頁面有一個頁眉和頁腳是用戶控件,幷包含許多服務器控件。ASP.NET頁面渲染

ASP.NET是否開始將HTML發送到客戶端瀏覽器,一旦它獲得了一些控件被呈現並轉換爲各自的HTML?還是等待整個頁面在服務器上呈現並轉換爲HTML格式,然後將頁面HTML發送回瀏覽器。

我看到我們網站的「頁面標題」顯示之前很多,然後頁面完全加載需要太多時間。我想澄清一下這個概念,不管它的服務器是花費時間還是客戶端腳本,圖像等都是罪魁禍首。相應地,我們將開始優化。

具體而言,我有興趣瞭解outputstream(在響應對象中)是如何發送到客戶端瀏覽器的?整個頁面在outputstream中呈現或者分批發送給客戶端(即少量控件呈現並通過outputstream發送到瀏覽器 - >然後再渲染一些控件等等),輸出流是否會被刷新?

對不起,如果我不清楚問題。

回答

1

我一直在尋找的答案是關於渲染方式,流如何發送到客戶端,可能有兩種方式,一是直接發送它,在多個塊,或緩存和存儲,直到整個頁面呈現,然後發送給客戶端。

我得到的答案:http://www.asp.net/aspnet/overview/aspnet-and-visual-studio-2012/whats-new

「通常情況下ASP.NET緩存響應字節,因爲它們是由應用程序創建ASP.NET,然後在最末端執行累計緩衝區的單個發送操作。請求處理

如果緩衝響應很大(例如,將大文件流式傳輸到客戶端),則必須定期調用HttpResponse.Flush向客戶端發送緩衝輸出,並控制內存使用情況。但是,由於同花順是一個同步調用,調用反覆沖洗仍然消耗了潛在的長期運行的請求的持續時間線程。」

謝謝大家對您的幫助!

3

調試,你可以打開.NET tracing上看到最新抽空在服務器端方面,

,並使用谷歌Chrome或Firefox的Firebug看什麼花時間在客戶端上。

1

用戶控件在.aspx頁面本身的控件之前呈現。

看看在Page Life Cycle

+0

您也可能會發現這個博客帖子一個很好的指導頁面生命週期中的事件序列:http://weblogs.asp.net/jeff/archive/2004/07/04/172683.aspx – 2010-10-13 13:03:40

2

我相信這是由Response.BufferOutput或類似的東西(手頭沒有提及),以確定控制是否應立即開始發出HTML,因爲它是準備好,或者是否應該存儲它在緩衝區中等待,直到一切完成併發送。

1

Fiddler應該有助於確定瓶頸在哪裏,如果您看到頁面標題顯示,但在我懷疑還有其他文件(圖像,JavaScript,css等等)後頁面不顯示一點),它們阻止頁面在瀏覽器中呈現而不是頁面中的html

1

Page rendering。在這個階段,查看頁面的狀態並保存所有的控件。該頁面爲每個控件調用Render方法,並將渲染的輸出寫入Page的Response屬性的OutputStream類。