一千萬個為什麽

搜索

如何禁用Response.Buffer

這似乎很愚蠢 - 我必須錯過一些明顯的東西。我有以下代碼(就像測試一樣):





<script runat="server">
    void page_load(object o, EventArgs e)
    {
        Response.Write(new string(' ', 255));
        Response.Flush();
        for (int i = 0; i < 10; i++)
        {
            Response.Write(i + "
"); Response.Flush(); System.Threading.Thread.Sleep(500); } } </script>
<title></title> </head> <body> <form id="form1" runat="server"> <div> main div </div> </form> </body> </html> 

當我在本地測試(vista x64,cassini)時,我得到了所需的輸出。1,然後是2,然後是3等都是非緩沖發送到瀏覽器。當我在開發服務器(2003,iis6)上嘗試這個功能時,它只是將其全部緩沖並一次發送。有什麽明顯的我失蹤了?我也嘗試在頂部放置buffer = false,但這也不會改變這種行為。

為了進一步澄清,我用小提琴手做了一個測試來比較兩臺服務器。第一臺服務器是局域網上的本地服務器,第二臺服務器是公用服務器。提琴手發現兩者之間沒有明顯的區別,除了主機名。在服務器完成加載之前,局域網服務器沒有寫出響應,公共服務器在響應發生時寫入響應。我也可以確認這種情況發生在Firefox和ie中。

最佳答案

在Page_Load中試試這個:

Response.BufferOutput = false;

同時獲取提琴手的副本並觀看HTTP對話以確保您的頁面未被緩存。

轉載註明原文: 如何禁用Response.Buffer