这看起来很愚蠢 - 我一定错过了一些明显的东西。我有以下代码(仅作为测试):
<%@ 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>
当我在本地测试这个(vista x64,cassini)时,我得到了所需的输出.. 1,然后 2,然后 3 等都以非缓冲方式发送到浏览器。当我在开发服务器(2003,iis6)上尝试此操作时,它只是将所有内容缓冲并一次发送。有什么明显的我失踪了吗?我也尝试将 buffer=false 放在顶部,但这也不会改变这种行为。
为了进一步澄清,我用 fiddler 做了一个测试来比较两台服务器。第一个服务器是局域网上的本地服务器,第二个是公共服务器。fiddler 发现两者之间没有明显的区别,除了主机名。LAN服务器在页面加载完成之前没有写出响应,公共服务器在发生时写出响应。我还可以确认这种行为发生在 Firefox 和 ie 中。