日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

ASP.NET中Response.BufferOutput屬性的使用技巧_實(shí)用技巧

作者:夢(mèng)想天空 ? 更新時(shí)間: 2022-09-03 編程語言

BufferOutput屬性用于獲取或設(shè)置一個(gè)值,該值指示是否緩沖輸出并在處理完整個(gè)頁之后發(fā)送它。該屬性默認(rèn)值是true,因此我們通常的頁面中的輸出內(nèi)容都是在頁面處理完成之后才發(fā)送給客戶端由瀏覽器呈現(xiàn)出來。如果頁面要處理的內(nèi)容很多,可能很長(zhǎng)時(shí)間才能看到頁面上的內(nèi)容。這個(gè)時(shí)候有兩種方法可以讓信息逐步顯示,這樣就能知道當(dāng)前程序運(yùn)行到哪一步了。

方法1:BufferOutput默認(rèn)值為true,這個(gè)時(shí)候可以借助Flush方法和Clear方法將當(dāng)前緩沖區(qū)的信息輸出。這個(gè)方法比較通用,當(dāng)你的頁面在處理一個(gè)復(fù)雜的程序的時(shí)候,可以即時(shí)輸出一些提示信息。

         protected void Page_Load(object sender, EventArgs e)
         {
             if (!IsPostBack)
             {
                 ShowInfo("中", 100);
                 Response.Flush();
                 Response.Clear();
                 Thread.Sleep(1000);
 
                 ShowInfo("國", 5);
                 Response.Flush();
                 Response.Clear();
                 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());
         }

方法2:把BufferOutput值設(shè)為false,這個(gè)時(shí)候緩沖區(qū)的內(nèi)容會(huì)立即發(fā)送給客戶端顯示。這種方法有性能問題,因?yàn)闆]有使用緩沖輸出,不過代碼簡(jiǎn)潔一些。

        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());
        }

在使用的時(shí)候有兩個(gè)問題需要注意:

一是IE瀏覽器在緩沖區(qū)數(shù)據(jù)不少于256字節(jié)的情況下才會(huì)輸出到客戶端,經(jīng)測(cè)試FF瀏覽器沒有這個(gè)問題。

二是UFT8編碼的漢字一般占三個(gè)字節(jié)(Unicode編碼是兩個(gè)字節(jié)),這里第一次輸出100個(gè)漢字是為了保證至少有256個(gè)字節(jié)的數(shù)據(jù)。

原文鏈接:https://www.cnblogs.com/lhb25/archive/2009/12/22/1629622.html

欄目分類
最近更新