這似乎很愚蠢 - 我必須錯過一些明顯的東西。我有以下代碼(只是作爲測試):如何禁用Response.Buffer
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<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 + "<BR>");
Response.Flush();
System.Threading.Thread.Sleep(500);
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
main div
</div>
</form>
</body>
</html>
當我測試這個本地(遠景64,卡西尼)時,得到所期望的輸出。1,然後如圖2所示,然後3等全部發送非緩衝到瀏覽器。當我在開發服務器(2003,iis6)上嘗試這個功能時,它只是將其全部緩衝並一次發送。有什麼明顯的我失蹤了?我也嘗試在頂部放置buffer = false,但這也不會改變這種行爲。
爲了進一步澄清,我用小提琴手做了一個測試來比較兩臺服務器。第一臺服務器是局域網上的本地服務器,第二臺服務器是公用服務器。提琴手發現兩者之間沒有明顯的區別,除了主機名。在服務器完成加載之前,局域網服務器沒有寫出響應,公共服務器在響應發生時寫入響應。我也可以確認這種情況發生在Firefox和ie中。
它是否在特定機器上緩存,您面臨問題? 嘗試清除有問題的計算機上的瀏覽器緩存。 – shahkalpesh 2008-12-23 05:24:15
我已經嘗試過不同的機器,包括未將以前訪問的頁面的機器 - 無代理.. – benpage 2008-12-23 05:48:41