ASP.NET中Response.BufferOutput的提示

來源:互聯網
上載者:User

  BufferOutput屬性用於擷取或設定一個值,該值指示是否緩衝輸出並在處理完整個頁之後發送它。該屬性預設值是true,因此我們通常的頁面中的輸出內容都是在頁面處理完成之後才發送給用戶端由瀏覽器呈現出來。如果頁面要處理的內容很多,可能很長時間才能看到頁面上的內容。這個時候有兩種方法可以讓資訊逐步顯示,這樣就能知道當前程式運行到哪一步了。

 

  方法1:BufferOutput預設值為true,這個時候可以藉助Flush方法和Clear方法將當前緩衝區的資訊輸出。這個方法比較通用,當你的頁面在處理一個複雜的程式的時候,可以即時輸出一些提示資訊。

 1         protected void Page_Load(object sender, EventArgs e)
 2         {
 3             if (!IsPostBack)
 4             {
 5                 ShowInfo("中", 100);
 6                 Response.Flush();
 7                 Response.Clear();
 8                 Thread.Sleep(1000);
 9 
10                 ShowInfo("國", 5);
11                 Response.Flush();
12                 Response.Clear();
13                 Thread.Sleep(1000);
14             }
15         }
16 
17         private void ShowInfo(string it, int count)
18         {
19             StringBuilder sb = new StringBuilder();
20             for (int i = 0; i < count; i++)
21             {
22                 sb.Append(it);
23             }
24             sb.Append("<br/>");
25             Response.Write(sb.ToString());
26         }

 

          方法2:把BufferOutput值設為false,這個時候緩衝區的內容會立即發送給用戶端顯示。這種方法有效能問題,因為沒有使用緩衝輸出,不過代碼簡潔一些。

 

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Response.BufferOutput = false;

                ShowInfo("中", 100);
                Thread.Sleep(1000);

                ShowInfo("國", 5);
                Thread.Sleep(1000);
            }
        }

        private void ShowInfo(string it, int count)
        {
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < count; i++)
            {
                sb.Append(it);
            }
            sb.Append("<br/>");
            Response.Write(sb.ToString());
        }

 

          在使用的時候有兩個問題需要注意:

    一是IE瀏覽器在緩衝區資料不少於256位元組的情況下才會輸出到用戶端,經測試FF瀏覽器沒有這個問題。

          二是UFT8編碼的漢字一般佔三個位元組(Unicode編碼是兩個位元組),這裡第一次輸出100個漢字是為了保證至少有256個位元組的資料。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.